当前位置: 代码迷 >> PHP >> memcache储存php session
  详细解决方案

memcache储存php session

热度:60   发布时间:2016-04-28 22:01:14.0
memcache存储php session

设置session用memcache来存储?

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

Php.ini代码??收藏代码
  1. session.save_handler?=?memcache??
  2. session.save_path?=?"tcp://127.0.0.1:11211"??


方法II: 某个目录下的 .htaccess?

Php.ini代码??收藏代码
  1. php_value?session.save_handler?"memcache"??
  2. php_value?session.save_path??"tcp://127.0.0.1:11211"??



方法III: 再或者在某个一个应用中?

Php代码??收藏代码
  1. ini_set("session.save_handler",?"memcache");??
  2. 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(依赖libmemcached库的那个扩展),则配置应为?

Php代码??收藏代码
  1. ini_set("session.save_handler",?"memcached");?//?是memcached不是memcache??
  2. ini_set("session.save_path",?"127.0.0.1:11211");?//?不要tcp:[/b]??



代码例子(不依赖libmemcached库的那个)?

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. ?>??


用 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 正常工作。

?

  相关解决方案