session 存到memcache里


web服務器的php session都給memcached ,這樣你不管分發器把 ip連接分給哪個web服務器都不會有問題了,配置方法很簡單,就在php的配置文件內

增加一條語句就可以了,不過前提你需要裝好memcache模塊(拓展)

 

1.設置session用memcache來存儲

方法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://127.0.0.1:11211");

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

如果安裝的PECL是memcached(使用libmemcache庫的那個),則配置應為
ini_set("session.save_handler", "memcached"); // 是memcached不是memcache
ini_set("session.save_path", "127.0.0.1:11211"); // 不要tcp:

 

2. 啟動 memcached:

memcached -d -l 127.0.0.1 -p 11212 -m 128

或 啟動Memcache的服務器端:

memcached -d -m 100 -u root -l 192.168.36.200 -p 11211 -c 256 -P /tmp/memcached.pid  

# /usr/local/bin/memcached -d -m 10 -u root -l 192.168.0.200 -p 12000 -c 256 -P /tmp/memcached.pid

引用
    -d選項是啟動一個守護進程,
    -m是分配給Memcache使用的內存數量,單位是MB,我這里是100MB,
    -u是運行Memcache的用戶,我這里是root,
    -l是監聽的服務器IP地址,如果有多個地址的話,我這里指定了服務器的IP地址192.168.36.200,
    -p是設置Memcache監聽的端口,我這里設置了11211,最好是1024以上的端口,我們這里統一使用11211
    -c選項是最大運行的並發連接數,默認是1024,我這里設置了256,按照你服務器的負載量來設定。
    -P是設置保存Memcache的pid文件,我這里是保存在/tmp/memcached.pid,


也可以直接用我百度雲盤的https://pan.baidu.com/s/1gf3u4YR   下載后在window里安裝測試

3. 在程序中使用 memcache 來作 session 存儲

用例子測試一下:

Php代碼  
  1. <?php    
  2. session_start();    
  3. if (!isset($_SESSION['TEST'])) {    
  4.     $_SESSION['TEST'] = time();    
  5. }    
  6.      
  7. $_SESSION['TEST3'] = time();    
  8.      
  9. print $_SESSION['TEST'];    
  10. print "<br><br>";    
  11. print $_SESSION['TEST3'];    
  12. print "<br><br>";    
  13. print session_id();    
  14. ?>    


4. 用 sessionid 去 memcached 里查詢一下:

Php代碼  
  1. <?php   
  2. $memcache = memcache_connect('localhost', 11211);    
  3. var_dump($memcache->get('19216821213c65cedec65b0883238c278eeb573e077'));    
  4. $memcache->set('aaaa', 'hello everyone');    
  5. var_dump($memcache->get('aaaa'));    
  6. ?>   

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

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

用 memcache 來存儲 session 在讀寫速度上會比 files 時快很多,而且在多個服務器需要共用 session 時會比較方便,將這些服務器都配置成使用同一組 memcached 服務器就可以,減少了額外的工作量。缺點是 session 數據都保存在 memory 中,持久化方面有所欠缺,但對 session 數據來說也不是很大的問題。

 

 

參考:http://blog.csdn.net/weilee2009/article/details/7658260


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM