使用 memcached 作為 php session handler
  • 4,550 views,
  • 2013-09-03,
  • 上傳者: Kuann Hung,
  •  0
b2d38a05340ac61af17fb4267945ff7a.jpg
 
PHP 預設的 session 是採用 file,也就是在你的 session 目錄中會多了一堆檔案,甚至是多層的目錄來存放 session 的資料。但如果流量一大的時候,使用檔案的方式就會變慢,而且不容易做分散式的管理。

除了檔案的方式之外,ADOdb for PHP 也提供使用資料庫的作法,這樣不但可以加快速度,也可以作分散式的處理。但若是資料庫本身 Loading 重的時候,可能會影響到效能。

所以以下介紹另一種選擇,memcached。就是利用 RAM 當作 session 存放的地方。所有的 session 資料都存放在 RAM 中,這樣存取速度就夠快了吧,而且支援 TCP ,可以很容易的就讓多個 Web Server 使用喔!

步驟
1.
安裝 Memecached
使用 yum 安裝
yum -y install php-pecl-memcached memcached memcached-devel
 
自己 compiler 的話
# wget http://memcached.googlecode.com/files/memcached-1.4.9.tar.gz
# wget https://github.com/downloads/libevent/libevent/libevent-2.0.15-stable.tar.gz --no-check-certificate
# tar -zxvf libevent-2.0.15-stable.tar.gz
# cd libevent-2.0.15-stable
# ./configure
# make
# make install
# cd memcached-1.4.9
# ./configure
# make
# make install
// make a soft link of the libevent
#  ln -s /usr/local/lib/libevent-2.0.so.5 /lib64/libevent-2.0.so.5
 

以上的指令可以幫助你抓到 memcached 的 source 以及所需要的 Library。最好自己可以查看一下,抓最新版本的來用喔!
Compiler 好之後,就可以在你開機的 script 中,(我一般放在 /etc/rc.d/rc.local),讓你的 memcached 自動執行起來,語法如下:
1
/usr/local/bin/memcached -d -m 2048 -l localhost -p 11211 -u root -c 512
參數的意義如下:
    -d 是指要把它執行為一個 daemon
    -m 是你要給他多少記憶體使用。我的例子中給 2048MB (2GB)
    -l  IP Address
    -p Port Number
    -u 用哪個 username 執行
    -c 最大可接受的 connections
執行起來之後,還要修改 php.ini
這裡只要改兩行就好:
 
[Session]
; Handler used to store/retrieve data.
#session.save_handler = files
session.save_handler = memcache
 
; where MODE is the octal representation of the mode. Note that this
; does not overwrite the process's umask.
#session.save_path = "/var/lib/php/session"
session.save_path="tcp://localhost:11211"
 
當然,要記得把 extension 設起來喔! extension=memcache.so
接下來用 phpinfo 測試一下就知道了!如果成功的話應該會看到以下畫面
 
圖片引用來源
Facebook 討論區載入中...
資料夾 :
標籤 :
發表時間 :
2013-09-03 18:29:15
觀看數 :
4,550
發表人 :
Kuann Hung
部門 :
老洪的 IT 學習系統
QR Code :