Memcache.class.php 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. <?php
  2. namespace Think\Session\Driver;
  3. class Memcache
  4. {
  5. protected $lifeTime = 3600;
  6. protected $sessionName = '';
  7. protected $handle = null;
  8. /**
  9. * 打开Session
  10. * @access public
  11. * @param string $savePath
  12. * @param mixed $sessName
  13. */
  14. public function open($savePath, $sessName)
  15. {
  16. $this->lifeTime = C('SESSION_EXPIRE') ? C('SESSION_EXPIRE') : $this->lifeTime;
  17. // $this->sessionName = $sessName;
  18. $options = array(
  19. 'timeout' => C('SESSION_TIMEOUT') ? C('SESSION_TIMEOUT') : 1,
  20. 'persistent' => C('SESSION_PERSISTENT') ? C('SESSION_PERSISTENT') : 0,
  21. );
  22. $this->handle = new \Memcache;
  23. $hosts = explode(',', C('MEMCACHE_HOST'));
  24. $ports = explode(',', C('MEMCACHE_PORT'));
  25. foreach ($hosts as $i => $host) {
  26. $port = isset($ports[$i]) ? $ports[$i] : $ports[0];
  27. $this->handle->addServer($host, $port, true, 1, $options['timeout']);
  28. }
  29. return true;
  30. }
  31. /**
  32. * 关闭Session
  33. * @access public
  34. */
  35. public function close()
  36. {
  37. $this->gc(ini_get('session.gc_maxlifetime'));
  38. $this->handle->close();
  39. $this->handle = null;
  40. return true;
  41. }
  42. /**
  43. * 读取Session
  44. * @access public
  45. * @param string $sessID
  46. */
  47. public function read($sessID)
  48. {
  49. return $this->handle->get($this->sessionName . $sessID);
  50. }
  51. /**
  52. * 写入Session
  53. * @access public
  54. * @param string $sessID
  55. * @param String $sessData
  56. */
  57. public function write($sessID, $sessData)
  58. {
  59. return $this->handle->set($this->sessionName . $sessID, $sessData, 0, $this->lifeTime);
  60. }
  61. /**
  62. * 删除Session
  63. * @access public
  64. * @param string $sessID
  65. */
  66. public function destroy($sessID)
  67. {
  68. return $this->handle->delete($this->sessionName . $sessID);
  69. }
  70. /**
  71. * Session 垃圾回收
  72. * @access public
  73. * @param string $sessMaxLifeTime
  74. */
  75. public function gc($sessMaxLifeTime)
  76. {
  77. return true;
  78. }
  79. }