在php中設定session用memcache來儲存的方法總結_php執行個體

來源:互聯網
上載者:User
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 "

"; print $_SESSION['TEST']; print "

"; 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");
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.