《WordPress啟用memcached動態(tài)緩存以及報錯解決》要點:
本文介紹了WordPress啟用memcached動態(tài)緩存以及報錯解決,希望對您有用。如果有疑問,可以聯(lián)系我們。
DEDECMS案例說到php的memcached和memcache組件,百度一搜都會教你如何安裝memcache(d),然后很多人就照著做,做到最后發(fā)現(xiàn)不對,試了半天雖然搞定了,但還是不知道到底有d還是沒有d,比如這位博客仁兄的經(jīng)驗分享:
DEDECMS案例為什么他選第二個不行?其實php的這2個組件還是有點區(qū)其余:
簡單來說:
DEDECMS案例其實,我們這種小網(wǎng)站的話,二選一即可,這點QPS還不至于糾結(jié).不過一旦選擇了,安裝的時候就要注意區(qū)分,一對一配套安裝,別搞的牛頭不對馬嘴,出現(xiàn)上面那位仁兄的困惑(后文有相關(guān)說明).
DEDECMS案例這里,我果斷選擇了帶d的,繼續(xù)分享.
DEDECMS案例Ps:說到這里又殺出一個容易混淆的程咬金.這里要安裝的memcached是指Mencached的服務(wù)端,用來處置緩存數(shù)據(jù).
DEDECMS案例下面2種安裝方式任選其一:
DEDECMS案例①、在線安裝
②、編譯安裝
- #Centos直接使用yum安裝即可,其他系統(tǒng)自行搜索安裝命令,比如ubuntu?
- yum?-y?install?memcached?
- ?
- #啟動memcached?
- service?memcached?start?
- ?
- #開機啟動?
- chkconfig?memcached?on?
DEDECMS案例相比在線安裝,很多時候編譯安裝更加靈活,非常類似Windows平臺的自定義安裝或綠色安裝,保舉熟悉 Linux 系統(tǒng)的朋友使用:
?
- #從官方下載最新源碼包?
- wget?http://memcached.org/files/memcached-1.4.25.tar.gz?
- ?
- #解壓開始編譯安裝?
- tar?xzvf?memcached-1.4.15.tar.gz?
- cd?memcached-1.4.15?
- ./configure?--prefix=/usr/local/memcached?
- make?&&?make?install?
- cd?..?
- ?
- #設(shè)置環(huán)境?
- ln?-s?/usr/local/memcached/bin/memcached?/usr/bin/memcached?
- cp?scripts/memcached.sysv?/etc/init.d/memcached?
- ?
- #改為監(jiān)聽127.0.0.1,并關(guān)閉UDP連接方式,若為遠程服務(wù)調(diào)用或不必要的話請?zhí)^此行?
- sed?-i?'s/OPTIONS=""/OPTIONS="-l?127.0.0.1?-U?0"/g'?/etc/init.d/memcached?
- ?
- sed?-i?'s@chown@#chown@'?/etc/init.d/memcached?
- sed?-i?'s@/var/run/memcached/memcached.pid@/var/run/memcached.pid@'?/etc/init.d/memcached?
- ?
- #啟動并設(shè)置開機服務(wù)?
- chmod?+x?/etc/init.d/memcached?
- service?memcached?start?
- chkconfig?--add?memcached?
- chkconfig?memcached?on?
DEDECMS案例①、先安裝libmemcached
DEDECMS案例先提前分享一個問題,如果直接依照網(wǎng)上的教程安裝php-memcached可能會報如下錯誤:
configure: error: no, sasl.h is not available. Run configure with --disable-memcached-sasl to disable this check
先看看SASL是什么?
SASL全稱Simple Authentication and Security Layer,是一種用來擴充C/S模式驗證能力的機制.
簡單來說SASL是一個膠合(glue)庫,通過這個庫把應(yīng)用層與形式多樣的認證系統(tǒng)整合在一起.這有點類似于 PAM,但是后者是認證方式,決定什么人可以訪問什么服務(wù),而SASL是認證過程,側(cè)重于信任建立過程,這個過程可以調(diào)用PAM來建立信任關(guān)系.在這里Memcached就是上面提到的應(yīng)用層,具體的認證交給SASL庫,SASL會根據(jù)相應(yīng)的認證機制來完成驗證功能.
果然,一般也用不到,所以大部分教程都是使用錯誤提示中的 --disable-memcached-sasl 來禁用張戈功能,作為一個強迫癥,我還是從國外的論壇扒到了解決方法,很簡單,在編譯libmemcached之前,先安裝cyrus-sasl-devel即可解決
?
- yum?install?cyrus-sasl-devel?
DEDECMS案例接著開始編譯安裝libmemcached:
?
- wget?https://launchpad.net/libmemcached/1.0/1.0.18/+download/libmemcached-1.0.18.tar.gz?
- tar?xzf?libmemcached-1.0.18.tar.gz?
- cd?libmemcached-1.0.18?
- ./configure?--with-memcached=/usr/local/memcached?--prefix=/usr/local/libmemcached?
- make?&&?make?install?
- cd?..?
DEDECMS案例②、安裝php-memcached組件
DEDECMS案例下載和解壓這步,我們要區(qū)分下是php7還是之前的版本:
DEDECMS案例I、如果當前環(huán)境是php7 :
?
- #從github下載PHP7專用的memcached組件分支?
- wget?https://github.com/php-memcached-dev/php-memcached/archive/php7.zip?
- #解壓備用?
- unzip?php7.zip?
- cd?php-memcached-php7?
DEDECMS案例
II、如果是之前的php版本:
?
- #從官方下載php-memcached的最新源碼包?
- wget?http://pecl.php.net/get/memcached-2.2.0.tgz?
- ?
- #解壓和編譯?
- tar?zxvf?memcached-2.2.0.tgz?
- cd?memcached-2.2.0?
DEDECMS案例接下來開始編譯:
?
- #注意已有php的實際路徑?
- /usr/local/php/bin/phpize?
- ./configure?--with-php-config=/usr/local/php/bin/php-config?
- make?&&?make?install?
DEDECMS案例編纂php.ini文件,在最后插入如下參數(shù)
?
- extension=memcached.so?
DEDECMS案例Ps:找不到php.ini ? 很簡單執(zhí)行命令:php --ini 即可找到,不信你嘗嘗.
DEDECMS案例保留后,執(zhí)行如下命令看看是否加載成功:
?
- php?-m?|?grep?memcached?
DEDECMS案例?
DEDECMS案例如果輸出memcached則表現(xiàn)成功.
DEDECMS案例最后,如果是Nginx就 service php-fpm reload ,如果是Apache就重啟Apache完成安裝.
DEDECMS案例③、測試緩存
?
- <?php?
- $m?=?new?Memcached();?
- $m->addServer(?'127.0.0.1',?11211?);?
- $m->set(?'foo',?100?);?
- echo?$m->get(?'foo'?)?.?"\n";?
DEDECMS案例將上述代碼保留為 test.php,然后執(zhí)行 php -f test.php,如果能輸出100表示安裝成功.
DEDECMS案例做完上述所有步調(diào),還只能說明系統(tǒng)環(huán)境已經(jīng)支持了memcached緩存.下面我們還要將這個緩存用起來才行.
DEDECMS案例值得說明的是,這里還有一個大坑等著你來踩:
WordPress官網(wǎng)上的object-cache.php雖然也號稱Memcached 插件,然而它只支持Memcache,不支持新版的,所以不克不及使用.如果錯誤地將object-cache.php和Memcached混用的話,則會出現(xiàn)WordPress打不開,前臺后臺頁面一片空白的現(xiàn)象.
?
DEDECMS案例這也便是經(jīng)常有站長反饋WordPress啟用memcached功能后,頁面空白的錯誤原因了.不巧,張戈在測試的時候也踩坑了,所以特別提出來,希望大家了解錯誤的原因,規(guī)避掉!
DEDECMS案例所以,如果你一開始選擇的是不帶d的memcache,那么直接用WordPress官方的object-cache.php插件即可!如果你選擇的是帶d的memcached,那么這里就不克不及用官方的插件,而是要用github版本:
DEDECMS案例https://github.com/tollmanz/wordpress-pecl-memcached-object-cache
DEDECMS案例在這里下載并解壓獲得的 object-cache.php,上傳到 wp-content 目錄即可開啟memcached緩存.當然,不管是帶d的還是不帶d的,記得都是上傳到wp-content目錄.
?
DEDECMS案例做完第2步之后,你可以去網(wǎng)站前臺刷新幾次,發(fā)生緩存,然后從官方下載探針:
DEDECMS案例http://pecl.php.net/get/memcache-3.0.8.tgz
DEDECMS案例解壓后,里面有一個memcache.php文件,編纂并找到如下代碼:
?
- define('ADMIN_USERNAME','memcache');????//?Admin?Username?
- define('ADMIN_PASSWORD','password');????//?Admin?Password?
- define('DATE_FORMAT','Y/m/d?H:i:s');?
- define('GRAPH_SIZE',200);?
- define('MAX_ITEM_DUMP',50);?
- ?
- $MEMCACHE_SERVERS[]?=?'mymemcache-server1:11211';?//?add?more?as?an?array?
- $MEMCACHE_SERVERS[]?=?'mymemcache-server2:11211';?//?add?more?as?an?array?
DEDECMS案例
修改如下:
?
- define('ADMIN_USERNAME','memcache');????//?Admin?Username?登錄名稱,自行修改?
- define('ADMIN_PASSWORD','password');????//?Admin?Password?登錄暗碼,自行修改?
- define('DATE_FORMAT','Y/m/d?H:i:s');?
- define('GRAPH_SIZE',200);?
- define('MAX_ITEM_DUMP',50);?
- //下面是定義memcached服務(wù)器,一般我們是單機部署,所以注釋掉一行,并將服務(wù)器地址根據(jù)實際修改,比如本文是127.0.0.1?
- $MEMCACHE_SERVERS[]?=?'127.0.0.1:11211';?//?add?more?as?an?array?
- //$MEMCACHE_SERVERS[]?=?'mymemcache-server2:11211';?//?add?more?as?an?array?
DEDECMS案例上傳到網(wǎng)站私密目錄(臨時測試可以放到根目錄),然后通過前臺訪問memcache.php這個文件,輸入上面的用戶名和暗碼即可看到memcached狀態(tài):
DEDECMS案例
DEDECMS案例如果發(fā)現(xiàn)頁面可以打開,但是里面沒有Hits數(shù)據(jù),說明WordPress并沒有成功連接到memcached,這時候我們可以在wp-config.php參加如下參數(shù):
?
- global?$memcached_servers;?
- $memcached_servers?=?array(?
- ????array(?
- ????????'127.0.0.1',?//?Memcached?server?IP?address?
- ?????????11211????????//?Memcached?server?port?
- ????)?
- );?
DEDECMS案例實際的memcached監(jiān)聽IP和端口,你可以通過如下命令查看:
?
- netstat?-nutlp?|?grep?memcache?
DEDECMS案例實際上memcached可以緩存動態(tài)查詢數(shù)據(jù),他也可以緩存html內(nèi)容!所以說,memcached也能實現(xiàn)和其他方案原因的html純凈態(tài)緩存!實現(xiàn)原理和我之前分享的php代碼緩存html方案類似,不外后者更好的是將緩存內(nèi)容放在了內(nèi)存當中,速度比放硬盤快的絕對不是一點點.
DEDECMS案例如何將前臺頁面html都緩存到memcached中呢?這里,我們必要用到?batcache 這款插件.
DEDECMS案例直接在WordPress后臺搜索安裝?batcache ,也可以從官方下載插件包:
DEDECMS案例https://wordpress.org/plugins/batcache/
DEDECMS案例然后解壓獲得?advanced-cache.php 上傳到wp-content即可.
DEDECMS案例在wp-config.php中啟用緩存:
?
- define('WP_CACHE',?true);?
- var?$max_age?=??3600;?//?Expire?batcache?items?aged?this?many?seconds?(zero?to?disable?batcache)?
- var?$remote??=????0;?//?Zero?disables?sending?buffers?to?remote?datacenters?(req/sec?is?never?sent)?
- var?$times???=????2;?//?Only?batcache?a?page?after?it?is?accessed?this?many?times...?(two?or?more)?
- var?$seconds?=??0;?//?...in?this?many?seconds?(zero?to?ignore?this?and?use?batcache?immediately)?
DEDECMS案例max_age代表緩存過期時間(以秒為單位),times表示拜訪多少次才創(chuàng)建緩存(2是最小值),seconds表示在多少秒之后才創(chuàng)建緩存(0表示立即).
DEDECMS案例我目前也只是要用到memcache的動態(tài)緩存,所以對付batcache也只是初步了解狀態(tài),感興趣的朋友可以自行搜索學(xué)習(xí)更多相關(guān)設(shè)置.
來源:http://zhangge.net/5097.html
維易PHP培訓(xùn)學(xué)院每天發(fā)布《WordPress啟用memcached動態(tài)緩存以及報錯解決》等實戰(zhàn)技能,PHP、MYSQL、LINUX、APP、JS,CSS全面培養(yǎng)人才。
轉(zhuǎn)載請注明本頁網(wǎng)址:
http://www.fzlkiss.com/jiaocheng/13750.html