关于Memcache与memcached
Memcache是项目名,memcached是服务名。让很多初接触的人感觉很是莫名其妙。个人认为正确的应该是用前者用更为正确一点。
1)安装Memcache服务端
1
| sudo apt-get install memcached
|
安装完Memcache服务端以后,我们需要启动该服务:
1
| memcached -d -m 128 -p 11211 -u www
|
memcached服务的启动参数:
-p 监听的端口
-l 连接的IP地址, 默认是本机
-d start 启动memcached服务
-d restart 重起memcached服务
-d stop|shutdown 关闭正在运行的memcached服务
-d install 安装memcached服务
-d uninstall 卸载memcached服务
-u 以的身份运行 (仅在以root运行的时候有效)
-m 最大内存使用,单位MB。默认64MB
-M 内存耗尽时返回错误,而不是删除项
-c 最大同时连接数,默认是1024
-f 块大小增长因子,默认是1.25-n 最小分配空间,key+value+flags默认是48
-h 显示帮助
我们使用php脚本做一个测试(这个是在qeephp里面做的测试)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| public function actionTestMema(){ ini_set("session.save_handler","memcache"); ini_set("session.save_path","tcp://127.0.0.1:11211"); session_start(); $_SESSION['test0'] = 'my value'; $_SESSION['test1'] = 'Thisvalue'; $sid = session_id(); echo "<a href='".url('default/testmemb',array('sid'=>$sid))."'>session</a>"; }
public function actionTestMemb(){ $mem = new Memcache(); $mem->connect('127.0.0.1',11211); if(isset($_REQUEST['sid'])){ $value = $mem->getstats();
$sess_value = $mem->get($_REQUEST['sid']); var_dump($sess_value); echo $sess_value; }else{ echo "error args"; } }
|
其中:
1 2 3
| ini_set("session.save_handler","memcache"); ini_set("session.save_path","tcp://127.0.0.1:11211"); session_start();
|
这句话是应该放在myapp.php这个文件中的
1 2 3 4 5 6 7 8 9 10 11 12
| if (Q::ini('runtime_session_start')) { ini_set("session.save_handler","memcache"); ini_set("session.save_path","tcp://127.0.0.1:11211"); session_start(); QLog::log('session_start()', QLog::DEBUG); QLog::log('session_id: ' . session_id(), QLog::DEBUG); }
|
如果你的输出结果是类似下面这样的话
1
| string(2044) "test0|s:8:"my value";test1|s:9:"Thisvalue";
|
说明你的安装就成功了,以上是在非命令行模式下测试的。如果你是cli命令行的话,我不能保证。