memcached提供了一個(gè)自定義的session處理器可以被用于存儲(chǔ)用戶session數(shù)據(jù)到memcached服務(wù)端。一個(gè)完全獨(dú)立的memcached實(shí)例將會(huì)在內(nèi)部使用,因此如果需要您可以設(shè)置一個(gè)不同的服務(wù)器池。session的key被存儲(chǔ)在前綴memc.sess.key.之下,因此, 如果你對(duì)session和通常的緩存使用了同樣的服務(wù)器池,請(qǐng)注意這一點(diǎn)。譯注:另外一個(gè)session和通常緩存分離的原因是當(dāng)通常的緩存占滿了memcached服務(wù)端后,可能會(huì)導(dǎo)致你的session被從緩存中踢除,導(dǎo)致用戶莫名的掉線。
session.save_handler string
設(shè)置為memcached開啟memcached的session處理器。
session.save_path string
定義一個(gè)逗號(hào)分隔的hostname:port樣式的session緩存服務(wù)器池,例如: "sess1:11211, sess2:11211".
方法I: 在 php.ini 中全局設(shè)置
session.save_handler = memcache session.save_path = "tcp://127.0.0.1:11211"
方法II: 某個(gè)目錄下的 .htaccess
php_value session.save_handler "memcache" php_value session.save_path "tcp://127.0.0.1:11211"
方法III: 再或者在某個(gè)一個(gè)應(yīng)用中
ini_set("session.save_handler", "memcache"); ini_set("session.save_path", "tcp://...:"); 使用多個(gè) memcached server 時(shí)用逗號(hào)","隔開,并且和 Memcache::addServer() 文檔中說(shuō)明的一樣,可以帶額外的參數(shù)"persistent"、"weight"、"timeout"、"retry_interval" 等等,類似這樣的:"tcp://host1:port1?persistent=1&weight=2,tcp://host2:port2" 。
如果安裝的PECL是memcached(依賴libmemcached庫(kù)的那個(gè)擴(kuò)展),則配置應(yīng)為
ini_set("session.save_handler", "memcached"); // 是memcached不是memcache ini_set("session.save_path", "127.0.0.1:11211"); // 不要tcp:[/b]代碼例子(不依賴libmemcached庫(kù)的那個(gè))
<?php session_start(); if (!isset($_SESSION['TEST'])) { $_SESSION['TEST'] = time(); } $_SESSION['TEST'] = time(); print $_SESSION['TEST']; print "<br><br>"; print $_SESSION['TEST']; print "<br><br>"; print session_id(); ?> 用 sessionid 去 memcached 里查詢一下:
<?php $memcache = memcache_connect('localhost', ); var_dump($memcache->get('ccedecbceebe')); $memcache->set('aaaa', 'hello everyone'); var_dump($memcache->get('aaaa')); ?>會(huì)看到
string(37) "TEST|i:1177556731;TEST3|i:1177556881;"
這樣的輸出,證明 session 正常工作。
下面通過(guò)兩種用法實(shí)例給大家介紹下php中使用memcached來(lái)存儲(chǔ)session
一、
ini_set("session.save_handler", "memcache");ini_set("session.save_path","tcp://127.0.0.1:11211");多個(gè)memcached
ini_set("session.save_path","tcp://127.0.0.1:11211,tcp://127.0.0.1:11211");二、
ini_set("session.save_handler", "memcached");ini_set("session.save_path","...:");多個(gè)memcached
ini_set("session.save_path","127.0.0.1:11211,127.0.0.1:11211");
|
新聞熱點(diǎn)
疑難解答