2015年2月16日 星期一

PHP 使用 memcached 儲存 Session

PHP 要跟 memcached server 連線,有兩個 extension 可以使用。
memcache(php-pecl-memcache) 或 memcached(php-pecl-memcached,使用 libmemcached library 的 API),
兩個最後面差了一個字母d。

在 CentOS 可以安裝 php-pecl-memcache 或 php-pecl-memcached,來選擇要使用哪一個 extension 跟 memcached server 連線。
兩者提供的操作方式不同,所以若有用到 PHP + memcached server 開發程式,要注意自己用的哪一個 extension
memcache extension:http://php.net/manual/en/book.memcache.php
memcached(libmemcached) extension:http://php.net/manual/en/book.memcached.php
memcached 可操作的方式比 memcache 多。

單純用來儲存 session,只需修改 php.ini 的設定,如下
session.save_handler = memcached
session.save_path = "127.0.0.1:11211"

session.save_handler 因為我使用選擇使用 memcached,所以設定為 memcached
這邊要特別注意 session.save_path 的設定,
如果用 memcache,session.save_path 可以設定為  "tcp://127.0.0.1:11211" 或 "127.0.0.1:11211",
但若用 memcached,只能設為 "127.0.0.1:11211",不然會發生重啟後,看似沒問題,卻沒辦法正常運作。


參考:
session.save_path設定:http://php.net/manual/en/memcached.sessions.php#99646
多個memcached Server設定:https://www.digitalocean.com/community/tutorials/how-to-share-php-sessions-on-multiple-memcached-servers-on-ubuntu-14-04


其他(使用nfs共享資料夾來共用session):
如果多台PHP server 共用session,session資料夾設定在nfs的共用資料夾,可能會發生 lock 而使網站變得很慢
Why not storage PHP SESSION on a NFS Volume?
[PHP] Slow sessions.
Re: statd: server localhost not responding, timed out; lockd: cannot monitor <client>
Very Slow session_start on nfs-mount

沒有留言:

張貼留言