程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP綜合 >> 在php中設置session用memcache來存儲的方法總結

在php中設置session用memcache來存儲的方法總結

編輯:PHP綜合

memcached提供了一個自定義的session處理器可以被用於存儲用戶session數據到memcached服務端。一個完全獨立的memcached實例將會在內部使用,因此如果需要您可以設置一個不同的服務器池。session的key被存儲在前綴memc.sess.key.之下,因此, 如果你對session和通常的緩存使用了同樣的服務器池,請注意這一點。譯注:另外一個session和通常緩存分離的原因是當通常的緩存占滿了memcached服務端後,可能會導致你的session被從緩存中踢除,導致用戶莫名的掉線。

session.save_handler string

設置為memcached開啟memcached的session處理器。

session.save_path string

定義一個逗號分隔的hostname:port樣式的session緩存服務器池,例如: "sess1:11211, sess2:11211".

方法I: 在 php.ini 中全局設置

session.save_handler = memcache 
session.save_path = "tcp://127.0.0.1:11211" 

方法II: 某個目錄下的 .htaccess

php_value session.save_handler "memcache" 
php_value session.save_path "tcp://127.0.0.1:11211" 

方法III: 再或者在某個一個應用中

ini_set("session.save_handler", "memcache"); 
ini_set("session.save_path", "tcp://...:"); 

使用多個 memcached server 時用逗號","隔開,並且和 Memcache::addServer() 文檔中說明的一樣,可以帶額外的參數"persistent"、"weight"、"timeout"、"retry_interval" 等等,類似這樣的:"tcp://host1:port1?persistent=1&weight=2,tcp://host2:port2" 。

如果安裝的PECL是memcached(依賴libmemcached庫的那個擴展),則配置應為

ini_set("session.save_handler", "memcached"); // 是memcached不是memcache 
ini_set("session.save_path", "127.0.0.1:11211"); // 不要tcp:[/b]

代碼例子(不依賴libmemcached庫的那個)

<?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')); 
?>

會看到

string(37) "TEST|i:1177556731;TEST3|i:1177556881;"

這樣的輸出,證明 session 正常工作。

下面通過兩種用法實例給大家介紹下php中使用memcached來存儲session

一、

ini_set("session.save_handler", "memcache");
ini_set("session.save_path","tcp://127.0.0.1:11211");

多個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","...:");

多個memcached

ini_set("session.save_path","127.0.0.1:11211,127.0.0.1:11211");
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved