memcache extension (php-pecl-memcache)
memcached extension (php-pecl-memcached)
以下安裝 memcached extension,功能較多。
php-pecl-memcached 可選擇使用 igbinary 來序列化,用以取代 php 原本的 serializer,所以也可以安裝 igbinary (目前的版本,設定檔沒指定 memcached.serializer 時,若有 igbinary 可用,預設會使用 igbinary )
$ yum install memcached $ yum install php-pecl-memcached $ yum install igbinary
Memcached Server 設定檔位置
$ vi /etc/sysconfig/memcached設定檔內容
PORT="11211" USER="memcached" MAXCONN="1024" CACHESIZE="64" OPTIONS=""PORT:listen監聽的port
USER:程序擁有者
MAXCONN:最大連線數
CACHESIZE:快取可使用的記憶體大小(MB)
OPTIONS:額外的設定
要知道 OPTIONS 怎麼設定,可查看啟動設定檔
「/usr/lib/systemd/system/memcached.service」
... EnvironmentFile=-/etc/sysconfig/memcached ExecStart=/usr/bin/memcached -u $USER -p $PORT -m $CACHESIZE -c $MAXCONN $OPTIONS ...發現原來 /etc/sysconfig/memcached 的設定,被轉成變數後,
以 「/usr/bin/memcached -u $USER -p $PORT -m $CACHESIZE -c $MAXCONN $OPTIONS」 方式執行
所以,如果要加上限制listen監聽 IP 的設定, 可修改「/etc/sysconfig/memcached」中的 OPTIONS
只監聽 127.0.0.1:
... OPTIONS="-l 127.0.0.1"
設定監聽 127.0.0.1 的 11212 port:
測試前面若也有設 PORT 變數,前面的 PORT 變數會無效
例如下例只會監聽 11212、不會監聽 11211
PORT="11211" ... OPTIONS="-l 127.0.0.1:11212"
監聽多組IP、port:
.... OPTIONS="-l 127.0.0.1:11212,127.0.0.1:11213,192.168.56.102:11211"Slab Allocator:一種linux系統的記憶體管理機制
[補充] 手動編譯:
PHP memcached extension,是使用 libmemcached library 跟 memcached server 溝通,所以要先裝 libmemcached。
編譯安裝 libmemcached (http://libmemcached.org/)
$ wget https://launchpad.net/libmemcached/1.0/1.0.18/+download/libmemcached-1.0.18.tar.gz $ tar zxvf libmemcached-1.0.18.tar.gz $ cd libmemcached-1.0.18 (若之前已編譯安裝過,要重新編譯,須先執行 make clean) (# make clean) $ ./configure --prefix=/usr/local/libmemcached --with-memcached $ make $ make install
編譯安裝 igbinary (http://pecl.php.net/package/igbinary)
$ wget http://pecl.php.net/get/igbinary-1.2.1.tgz $ tar zxvf igbinary-1.2.1.tgz $ cd igbinary-1.2.1 (若之前已編譯安裝過,要重新編譯,須先執行 make clean) (# make clean) $ /usr/local/php/bin/phpize $ ./configure --with-php-config=/usr/local/php/bin/php-config $ make $ make install Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/ Installing header files: /usr/local/php/include/php/
編譯安裝 msgpack (https://pecl.php.net/package/msgpack)
除了 igbinary,也可以選 msgpack 當 serializer
$ wget https://pecl.php.net/get/msgpack-0.5.7.tgz $ tar zxvf msgpack-0.5.7.tgz $ cd msgpack-0.5.7 (若之前已編譯安裝過,要重新編譯,須先執行 make clean) (# make clean) $ /usr/local/php/bin/phpize $ ./configure configure: error: Cannot find php-config. Please use --with-php-config=PATH 加上 php-config 路徑 $ ./configure --with-php-config=/usr/local/php/bin/php-config $ make $ make install Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/ Installing header files: /usr/local/php/include/php/
最後再編譯安裝 php pecl memcached(https://pecl.php.net/package/memcached)
視要使用 igbinary 或 msgpack 當 serializer,編譯參數可選擇加入 "--enable-memcached-igbinary" 或 "--enable-memcached-msgpack",也可都加入
$ wget http://pecl.php.net/get/memcached-2.2.0.tgz $ tar zxvf memcached-2.2.0.tgz $ cd memcached-2.2.0 (若之前已編譯安裝過,要重新編譯,須先執行 make clean) (# make clean) $ /usr/local/php/bin/phpize $ ./configure --enable-memcached-igbinary --enable-memcached-msgpack --disable-memcached-sasl --enable-memcached --with-php-config=/usr/local/php/bin/php-config --with-zlib-dir --with-libmemcached-dir=/usr/local/libmemcached $ make $ make install Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/
假設 memcached.serializer 要使用 msgpack,編輯 php.ini ,加入 memcached.serializer="msgpack" 設定
$ vi /usr/local/php/etc/php.ini [memcached] memcached.serializer="msgpack"
重新啟動PHP後,查看 memcached.serializer 設定
$ /usr/local/php/bin/php -i | grep memcached.serializer memcached.serializer => msgpack => msgpack
若要解決安裝 igbinary、msgpack、php pecl memcached ,在 configure 時出現以下 WARNING 訊息
「configure: WARNING: You will need re2c 0.13.4 or later if you want to regenerate PHP parsers.」
可安裝 re2c (http://re2c.org/)
$ wget https://github.com/skvadrik/re2c/releases/download/0.15.3/re2c-0.15.3.tar.gz $ tar zxvf re2c-0.15.3.tar.gz $ cd re2c-0.15.3 $ ./configure $ make $ make install
其他:
stop PHP $ kill -INT `cat /usr/local/php/var/run/php-fpm.pid` start PHP $ /usr/local/php/sbin/php-fpm -g /usr/local/php/var/run/php-fpm.pid & restart PHP $ kill -USR2 `cat /usr/local/php/var/run/php-fpm.pid`
參考:
http://php.net/manual/en/memcached.installation.php
http://iceeggplant.blog.51cto.com/1446843/819576
http://pecl.php.net/package/memcached
http://blog.slogra.com/post-421.html
沒有留言:
張貼留言