首先安裝memcached
brew install memcached
由于PHP對(duì)memcached的支持是由基于libmemached的PHP memcached擴(kuò)展實(shí)現(xiàn)的醋寝,首先到https://libmemcached.org/libMemcached.html下載llibmemcached包。
解壓后進(jìn)入文件夾進(jìn)行編譯
./configure
make
接下來(lái)問(wèn)題來(lái)了仗岖,編譯過(guò)程中會(huì)出現(xiàn)兩個(gè)error
libmemcached/byteorder.cc:66:10: error: use of undeclared identifier 'ntohll'
return ntohll(value);
^
libmemcached/byteorder.cc:75:10: error: use of undeclared identifier 'htonll'
return htonll(value);
這時(shí)需要在libmemcached/byteorder.cc
的
#include "mem_config.h"
#include "libmemcached/byteorder.h"
后面加上
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
這時(shí)make clean
一下剖笙,清除上次make產(chǎn)生的文件鼎天,再次make
這時(shí)會(huì)出現(xiàn)另一個(gè)error
clients/memflush.cc:42:19: error: comparison between pointer and integer ('char *' and 'int')
if (opt_servers == false)
clients/memflush.cc:51:21: error: comparison between pointer and integer ('char *' and 'int')
if (opt_servers == false)
解決辦法:
把 clients/memflush.cc
中的兩處opt_servers == false
的false改成NULL
一般來(lái)說(shuō)改了這兩處就沒(méi)有其他問(wèn)題了,如此修改的原因參見(jiàn)https://blog.longqiuhong.com/archives/132
接下來(lái)
make clean
make
make install
等待滾屏湿颅。
libmemcached安裝完成叨襟,接下來(lái)安裝php-memcached擴(kuò)展
網(wǎng)上有些文章使用自行下載memcached擴(kuò)展包然后編譯安裝的方式,比較麻煩晰洒,這里使用更簡(jiǎn)單的方法
pecl install memcached
pecl是一個(gè)PHP擴(kuò)展庫(kù)朝抖,使用pear的包管理器,可以幫助我們快速安裝php擴(kuò)展
接下來(lái)谍珊,pecl將會(huì)詢問(wèn)libmemcached的所在路徑治宣,如果安裝正確,輸入/usr/local
就可以自動(dòng)地安裝好memcached擴(kuò)展了。
如果之前的編譯安裝沒(méi)成功侮邀,可能會(huì)提示找不到memcached.h
這時(shí)需要重復(fù)嘗試
make clean
make
make install
pecl install memcached
筆者也是嘗試了幾次才成功坏怪。
接下來(lái)開(kāi)啟我們的memcached服務(wù)
brew services start memcached
查看memcached監(jiān)聽(tīng)的端口,一般是11211
lsof | grep memcached
其中有兩行最后標(biāo)有(LISTEN)
字樣绊茧,這里的端口號(hào)就是memcached監(jiān)聽(tīng)的端口了铝宵。
到這里安裝工作圓滿完成。