PHP緩存基礎

警告:此帖子已過時,可能無法反映當前的最新狀態

PHP相當快,並且隨著PHP 7的發布,它的速度大大提高,有時平均速度是PHP 5.5的2倍。 HHVM有時甚至更快。也就是說,緩存對於PHP應用程序的速度至關重要。

OP緩存

OPCache是一種特殊的緩存機制,用於存儲PHP文件的預編譯版本。執行時,一個PHP文件被編譯為字節碼,一旦完成此過程,字節碼便被執行。

99.9%的操作碼在幾天之內是相同的,因為一個文件可能幾個月都不會改變,但是默認情況下,PHP每次都會重新編譯一次。

為了改善這一點,請使用OPCache。 OPCache通過將預編譯的腳本字節碼存儲在共享內存中來提高PHP的性能,而無需PHP在每個請求上加載和解析腳本。

自PHP 5.5起,它已捆綁在內核中,只需安裝它即可使我們獲得極大的速度改進,這就是廢話。

OPCache文檔

銅銅合金

APCu是沒有操作碼緩存的舊APC,現在由OPCache正式提供。它是一個用戶緩存,這意味著必須由PHP代碼顯式使用它才能利用它,而OPCache在安裝後即可完成所有工作。

當執行昂貴的操作(如讀取文件或獲取網絡資源)時,可以將結果存儲在用戶緩存中,以加快以後對同一對象的請求。

APCu的唯一缺點是,它對運行它的計算機是本地的,對PHP進程和系統是本地的。這意味著,如果您將PHP用作FastCGI進程(例如Nginx和php-fpm),則每個PHP進程都會擁有自己的緩存。

除非您希望在多個服務器或進程上運行您的應用程序,否則就可以了。否則,Memcached和Redis可能是一個很好的解決方案。

使用APCu

<?php
function getData() {
    $data = apc_fetch('some_data');
    if ($data === false) {
        $data = $this->getSomeData();
        apc_add('some_data', $data);
    }
    return $data;
}
?>

APCu文檔

APC,XCache,Memcached,Redis等

由於OPcache現在是內置的,並且鍵值緩存現在是APCu的一部分,因此APC不再重要。不再建議使用XCache,請改用APCu。 Memcached和Redis可以替代APCu,在獨立系統上不太方便,因為它們必須單獨設置,與APCu相比並沒有真正的優勢,但是如果您運行多個PHP進程或設置系統網絡(它們都可以依靠)則非常方便在中央緩存位置上。