2013-06-28 29 views
28

默認情況下,PHP 5.5包含zend opcache,這基本上意味着幾乎沒有人會使用APC。在php 5.5中使用什麼來代替apc用戶數據緩存?

但是用什麼來代替APC的用戶數據緩存部分(apc_store & apc_fetch &類似)?

我真的很喜歡使用APC用戶數據緩存的一個用例是靜態資產(javascript,css ..)的「版本」。每當我引用靜態文件時,我將其內容的哈希值添加到url中(例如,<腳本src =/script.js >將變爲< script src =/script.js?v = hash >),以便瀏覽器始終使用當前版本並可以永久緩存它。

我可以想象使用redis或memcache來存儲靜態文件的哈希值,但通過網絡或套接字來請求另一個進程只是爲了獲得文件內容的哈希似乎很愚蠢。 APC用戶數據緩存(在共享內存中並訪問它幾乎與訪問php變量一樣快)似乎是正確的用於這種數據。

所以問題是:在PHP 5.5中使用什麼來緩存小數據而不是APC?

+8

使用APCu,它只是APC的用戶緩存部分。 – NikiC

回答

28

從PHP 5.5開始,APC用戶數據存儲單獨打包爲PECL APCu

這使您可以使用all user cache functions,例如apc_store()。它也將返回trueextension_loaded('apc') - 這意味着所有依賴於APC的庫都將以類似於PHP 5.4的方式工作。

+0

yum install php5-pecl-apcu - >沒有包可用 – Flion

+1

@FlyOn你是對的。謝謝!我已經更正了Fedora/Redhat的軟件包名稱... –

+1

謝謝!我會使用opcache,但我正在處理的存儲庫需要apc。救命就在這裏。 –

6

最近我處理了這個問題,從PHP 5.3升級到PHP 5.5 Beta 2中

我看着內存緩存和Redis的後。根據你問的人,兩者之間的表現大致相同。有人聲稱Redis速度稍快。然而,Redis比Memcahe有更多的功能,所以我決定和Redis一起去。

對於PHP客戶端,我選擇了Phpredis而不是Predis。 Phpredis是C擴展,而Predis是純PHP實現。因此,Phpredis通常更快。

我主要使用Redis緩存和檢索序列化對象。我開始使用APC在PHP 5.3中開發我正在開發的項目。我正在繼續用php 5.5和Redis開發這個項目。雖然我沒有基準統計數據,但我可以告訴你,該應用「感覺」更快。這可能是由於php 5.5中的性能增強,而不是APC用戶緩存對比Redis。無論哪種方式,我都很滿意我的選擇。

我希望有幫助。祝你好運和快樂黑客:-)

0

沒什麼可說的。你已經得到了正確的答案。我guesy我可以爲你提供一個鏈接教程如何在Windows平臺的XAMPP下載並安裝APCu爲PHP 5.5和5.6:

鏈接也從5.3下載APCu的PHP版本和更高: download APCu different versions

安裝教程:instalatioiin instrucions(最新版本應該在文件列表的最底部 - 用這一個)

的同時也要記住,你將有兩個從幾個選項可供選擇像64或84版本以及NTS或TSVC9或VC11(它可以在你的情況不同),並ofcourse的corect PHP版本(對我來說這將是PHP 5.6我的XAMPP)。

例:,如果你想選擇你需要首先運行的p​​hpinfo(),並檢查這些參數正確

Zend擴展構建建築

在我的情況是:

[Zend Extension Build:] API220131226,TS,VC11 

[Architecture:] x86 

這意味着,在我來說,我將不得不選擇ACLU wchich包含 在文件名中的參數5.6,TS,VC11,86

文件名來下載:php_apcu-4.0。 7-5.6-ts-vc11-x86.zip

希望能夠爲您解決問題。


上不同PHP一些aditional的解釋構建:

差Ts VS NTS: TS指的是多線程能夠生成。 NTS指單線程構建。 TS二進制文件的用例涉及與作爲模塊加載到Web服務器中的多線程SAPI和PHP的交互。對於NTS二進制文件,廣泛的用例是通過FastCGI協議與Web服務器進行交互,不使用多線程(但也可使用CLI)。

區別VC9 VS VC11 VS VCl 4: 更多的PHP的最新版本與VC9,VC11或VCl 4(Visual Studio 2008中,2012年或2015年分別編譯)構建的,包括在性能和穩定性方面的改進。

  • 的VC9建立需要你有在Visual C++可再發行的Visual Studio 2008 SP1 x86或x64安裝
  • 的VC11建立需要有在Visual C++可再發行的Visual Studio 2012 x86或x64安裝
  • 的VCl 4構建需要有Visual C++的再發行的Visual Studio 2015 x86或x64安裝

差86比64: 的64建立PHP的風流行應該被認爲是實驗性的,並且還沒有提供64位整數或者大文件支持。