PHP爲了能夠與memcached服務器端交互,有兩個PHP擴展能夠使用:memcache擴展和memcached擴展。安裝兩個中的任一個擴展均可與memcached服務器實現交互。memcached擴展比較新,相對來講性能各方面可能會好一點。實際工做中,安裝哪一個擴展最終可能仍是取決於開發人員使用的是哪一個擴展。我這裏介紹如何安裝兩個中的memcached擴展。個人操做系統是CentOS 6.5版本的。php
之前,使用PHP 5.6時,要安裝memcached擴展,我一般是這樣作的。html
一、先yum安裝php-devel。這個php-devel包含了編譯PHP擴展所需的文件。服務器
yum install php-develide |
二、memcached擴展依賴於libmemcached庫。這個libmemcached是C/C++語言寫的memcached客戶端工具和庫。因此,使用yum安裝libmemcached庫:memcached
yum install libmemcached libmemcached-devel工具 |
三、而後,使用pecl命令直接自動化下載、編譯和安裝memcached擴展:性能
pecl install memcachedspa # 如今,應該要指定特定版本才能安裝成功,由於默認安裝最新穩定版的擴展,而最新穩定版擴展示在是適用於PHP 7的操作系統 # 安裝過程當中,會詢問libmemcached的安裝目錄(含有include/libmemcached/memcached.h的目錄),我這裏是/usr目錄。.net |
四、最後,在php.ini配置文件中加上下面的語句,並重啓PHP程序即大功告成:
extension=memcached.so |
可是,當使用PHP 7時,問題就來了。當我使用pecl命令安裝memcached擴展時就報下面的錯:
意思是說libmemcached不支持sasl,因此failed了,能夠使用--disable-memcached-sasl選項來禁用這個檢查。pecl自動安裝改不了編譯選項,那我就把memcached擴展包下載下來,手工編譯吧。結果,一進行編譯就報一大堆錯誤,大概應該就是程序語法不兼容吧。下面是示例截圖:
但這就有點費解了,這是什麼緣由啊。其實,若是把memcached擴展包下載下來,看裏面的說明,就會發現,memcached 3.x版本擴展須要libmemcached 1.x及以上版本,而當前默認安裝的就是memcached擴展3.0.3版本。
而我使用yum命令安裝的libmemcached才0.31版本:
因此,結論是,libmemcached版本過低。因此仍是乖乖先編譯一個高版本的libmemcached,再安裝memcached擴展吧。
下面是給PHP 7安裝memcached擴展的完整步驟。
一、先到libmemcached的官網http://libmemcached.org/libMemcached.html下載libmemcached安裝包,1.x版本,建議是1.0.18或以上。我這裏直接使用命令下載了:
wget https://launchpadlibrarian.net/165454254/libmemcached-1.0.18.tar.gz |
解壓:
tar -xvf libmemcached-1.0.18.tar.gz |
編譯安裝到/usr/local/libmemcached目錄:
cd libmemcached-1.0.18 ./configure --prefix=/usr/local/libmemcached make make install |
二、直接使用pecl命令安裝適用於PHP 7的memcached擴展,我使用的是最新的memcached 擴展3.0.3穩定版:
pecl install memcached-3.0.3 # 在提示libmemcached directory [no]時,輸入libmemcached的安裝目錄/usr/local/libmemcached |
看,此次就成功編譯並安裝了:
三、最後,就在php.ini配置文件中加上下面的語句,並重啓PHP程序就好了:
extension=memcached.so |