memcache和 Xcache 是PHP的2個快取工具。PHP5.5以來,自帶有 Zend Opcache ,不過預設沒啟用。
這些快取器的原理:
引用
把PHP執行後的資料緩衝到記憶體中從而避免重複的編譯過程,能夠直接使用緩衝區已編譯的程式碼從而提高速度,降低伺服器負載,它們的效率是顯而易見的,像drupal這種龐大的CMS,每次開啟一個頁面要呼叫數十個PHP檔案,執行數萬行程式碼,效率可想而知
然而Opcache 只自動快取程式碼,它沒有開放一個自定義快取的API,要用到使用者快取的話還得用上Xcache或者memcache。
Xcache是華人所做,看起來很牛叉,但是在實際應用中發現這個東西太不穩定了,光用它作程式碼快取(後臺自動快取PHP程式碼),竟然有時候會使得整個PHP程序都當掉。然後也試了Xcache的使用者快取,API文件寫得真夠殘的,好在還能用,但萬沒有想到,在fastcgi模式下,快取命中率低得可憐,用和沒用基本上差不多,明明快取了,後一個請求過來一查卻說沒快取,可能延時個幾秒後才得知這個已經快取了,才能取出快取內容。這玩意到底仔細測試沒有?我用的是3.1.0官方正式版Xcache在PHP 5.5 裡作的測試,簡直就是個廢物!還記得以前在PHP5.2裡面也用它過,莫名其妙的請求失敗也時有出現。現在直接不敢再用……
相比這個XCache,memcache穩定得多。題外話:memcached和memcache又有點不同,memcached是memcache的守護程序,但是PHP中也有memcached的擴充套件。這兩個說實話是讓人頭暈不知道是什麼區別,其實我看來就是呼叫memcache的封裝模式不太一樣而已。具體哪些呼叫上的不同,參考 http://pecl.php.net/package/memcache 和http://pecl.php.net/package/memcached 。一看就知道memcached要多一些API函式呼叫,功能也更強大一些。而實際上基礎應用的話memcache已經足夠。
memcache的使用首先要有它的服務(也就是memcached程序)在跑,這個是一個小小的軟體,一般是用C++編譯,可以部署在與PHP同一臺也可以不同,甚至可以分散式部署幾個memcached服務在不同的伺服器上。而PHP的memcached只是它的客戶端而已。memcached本身沒有PHP程式碼快取功能,現升到PHP5.5後直接交給自帶Opcache 了。一般用它作使用者快取。經過實際開發,memcached穩定性是非常高的,只要有快取,命中率幾乎在99%以上。PHP官方下提供了它的擴充套件可直接使用:http://pecl.php.net/package/memcache 連Windows版的DLL也直接在那裡了,不用自己再編譯。Windows下編譯這些東西真是麻煩得很啦~
綜上memcache更加穩定,推薦使用。Xcache真要用的話,還是老實在本地先測試一下再說。
此外,微軟Windows下PHP可以使用Wincache,這個的穩定性沒得說的,而且也不用守護程序。但是微軟沒能編譯適用於PHP 64位的DLL。要想通用和跨平臺,memcache是首選!!
memcache和 Xcache 是PHP的2個快取工具。PHP5.5以來,自帶有 Zend Opcache ,不過預設沒啟用。
這些快取器的原理:
引用
把PHP執行後的資料緩衝到記憶體中從而避免重複的編譯過程,能夠直接使用緩衝區已編譯的程式碼從而提高速度,降低伺服器負載,它們的效率是顯而易見的,像drupal這種龐大的CMS,每次開啟一個頁面要呼叫數十個PHP檔案,執行數萬行程式碼,效率可想而知
然而Opcache 只自動快取程式碼,它沒有開放一個自定義快取的API,要用到使用者快取的話還得用上Xcache或者memcache。
Xcache是華人所做,看起來很牛叉,但是在實際應用中發現這個東西太不穩定了,光用它作程式碼快取(後臺自動快取PHP程式碼),竟然有時候會使得整個PHP程序都當掉。然後也試了Xcache的使用者快取,API文件寫得真夠殘的,好在還能用,但萬沒有想到,在fastcgi模式下,快取命中率低得可憐,用和沒用基本上差不多,明明快取了,後一個請求過來一查卻說沒快取,可能延時個幾秒後才得知這個已經快取了,才能取出快取內容。這玩意到底仔細測試沒有?我用的是3.1.0官方正式版Xcache在PHP 5.5 裡作的測試,簡直就是個廢物!還記得以前在PHP5.2裡面也用它過,莫名其妙的請求失敗也時有出現。現在直接不敢再用……
相比這個XCache,memcache穩定得多。題外話:memcached和memcache又有點不同,memcached是memcache的守護程序,但是PHP中也有memcached的擴充套件。這兩個說實話是讓人頭暈不知道是什麼區別,其實我看來就是呼叫memcache的封裝模式不太一樣而已。具體哪些呼叫上的不同,參考 http://pecl.php.net/package/memcache 和http://pecl.php.net/package/memcached 。一看就知道memcached要多一些API函式呼叫,功能也更強大一些。而實際上基礎應用的話memcache已經足夠。
memcache的使用首先要有它的服務(也就是memcached程序)在跑,這個是一個小小的軟體,一般是用C++編譯,可以部署在與PHP同一臺也可以不同,甚至可以分散式部署幾個memcached服務在不同的伺服器上。而PHP的memcached只是它的客戶端而已。memcached本身沒有PHP程式碼快取功能,現升到PHP5.5後直接交給自帶Opcache 了。一般用它作使用者快取。經過實際開發,memcached穩定性是非常高的,只要有快取,命中率幾乎在99%以上。PHP官方下提供了它的擴充套件可直接使用:http://pecl.php.net/package/memcache 連Windows版的DLL也直接在那裡了,不用自己再編譯。Windows下編譯這些東西真是麻煩得很啦~
綜上memcache更加穩定,推薦使用。Xcache真要用的話,還是老實在本地先測試一下再說。
此外,微軟Windows下PHP可以使用Wincache,這個的穩定性沒得說的,而且也不用守護程序。但是微軟沒能編譯適用於PHP 64位的DLL。要想通用和跨平臺,memcache是首選!!