如何使用 PHP 扩展 Memcached 的长连接模式

 我来答
阿神1990
2017-01-04 · TA获得超过178个赞
知道小有建树答主
回答量:410
采纳率:0%
帮助的人:256万
展开全部

使用 PHP 扩展 Memcached 的长连接模式

Memcached 的扩展模块提供的构造函数提供一个参数 persistent_id 可选项,手册中这样介绍:

默认情况下,Memcached实例在请求结束后会被销毁。但可以在创建时通过persistent_id为每个实例指定唯一的ID, 在请求间共享实例。所有通过相同的persistent_id值创建的实例共享同一个连接。

这个参数的含义就是说如果传递了一个id给到构造方法,那么就会建立长连接:

<?php
$mc = new Memcached('mc');
$mc->addServers(array(
    array('mc1.example.com',11211),
    array('mc2.example.com',11211),
));
?>

PHP 扩展 Memcached 长连接模式的最佳实践

但需要注意的是当第一次通过建立起 Memcahced 长连接后,切记不要再重复添加 Memcached 的服务端,不然页面没刷新一次就会添加一次,该 persistent_id 下的 Memcached 服务器端就会越来越多,这样就会导致 PHP 的进程异常,与 Memcached 的通信越来越慢。所以使用 PHP Memcached 的长连接模式最佳实践是使用 getServerList() 方法是否已经添加了服务器端,如果没有添加再在进行添加服务器端的操作:

<?php
$mc = new Memcached('mc');
$mc->setOption(Memcached::OPT_LIBKETAMA_COMPATIBLE, true);
if (!count($mc->getServerList())) {
    $mc->addServers(array(
        array('mc1.example.com',11211),
        array('mc2.example.com',11211),
    ));
}
?>

更多问题可以去php中文网问答社区提问http://www.php.cn/wenda.html,大神在线帮你解决,希望对你有帮助

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式