轉自:http://weixiang096.blog.163.com/blog/static/12747355520119289744424/
PECL :: Package :: memcache 2.1.1 版本的 Changelog 中有一條:
- Added experimental session storage support. You can use memcached as session storage.
也就是可以直接用 memcache 來作 PHP 的 session.save_handler。
1. 安裝? memcached ,還是那套 ./configure; make; make install,注意 memcached 用 libevent 來作事件驅動,所以要先安裝有 libevent。
2. 安裝? pecl::memcache ,用 pecl 命令行工具安裝:
pecl install memcache
或直接從源碼安裝:
phpize
./configure
make
make install
將 php.ini 中 extension=memcache.so 打開,重啟一下 apache,查看 phpinfo 中的 "Registered save handlers" 會有 "files user memcache" 這3個可用。
3. 修改配置文件,在 php.ini 中全局設置:
session.save_handler = memcache
session.save_path = "tcp://127.0.0.1:11211"
或者某個目錄下的 .htaccess :
php_value session.save_handler "memcache"
php_value session.save_path "tcp://127.0.0.1:11211"
再或者在某個一個應用中:
ini_set("session.save_handler", "memcache");
ini_set("session.save_path", "tcp://127.0.0.1:11211");?
使用多個 memcached server 時用逗號","隔開,并且和? Memcache::addServer() ?文 檔中說明的一樣,可以帶額外的參數"persistent"、"weight"、"timeout"、"retry_interval" 等等,類似這樣的:"tcp://host1:port1?persistent=1&weight=2,tcp://host2:port2" 。
4. 啟動 memcached:
memcached -d -l 127.0.0.1 -p 11212 -m 128
5. 在程序中使用 memcache 來作 session 存儲,用例子測試一下:
<?php
session_start();
if (!isset($_SESSION['TEST'])) {
$_SESSION['TEST'] = time();
}
$_SESSION['TEST3'] = time();
print $_SESSION['TEST'];
print "<br><br>";
print $_SESSION['TEST3'];
print "<br><br>";
print session_id();
?>
6. 用 sessionid 去 memcached 里查詢一下:
<?php
$memcache = memcache_connect('localhost', 11211);
var_dump($memcache->get('19216821213c65cedec65b0883238c278eeb573e077'));
?>
會有看到
string(37) "TEST|i:1177556731;TEST3|i:1177556881;"
這樣的輸出,證明 session 正常工作。
用 memcache 來存儲 session 在讀寫速度上會比 files 時快很多,而且在多個服務器需要共用 session 時會比較方便,將這些服務器都配置成使用同一組 memcached 服務器就可以,減少了額外的工作量。缺點是 session 數據都保存在 memory 中,持久化方面有所欠缺,但對 session 數據來說也不是很大的問題。
另外, WS Memcached Session Handler for PHP ?提供一種用 session_set_save_handler 來利用 memcached 的方法。
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
