PHP-memcache长连接的疑问

发布于 2017-04-22 02:58:14 字数 1613 浏览 1225 评论 1

请问各位高手,memcache的长连接是整个php服务只用一条连接吗?还是每个用户访问都只用一条连接呢?我尝试用了几个浏览器、手机来测试,但连接的数量都没有增加,不解。

而且程序没有怎样执行就使用了19个链接
$mem = new Memcache;
$mem->addServer("127.0.0.1",11211,true,50);
$mem->addServer("127.0.0.1",11212,true,80);
echo "<pre>";
print_r($mem->getExtendedStats());
exit;

输出链接情况:
Array
(
[127.0.0.1:11211] => Array
(
[pid] => 1794
[uptime] => 1646
[time] => 1403434907
[version] => 1.4.20
[libevent] => 1.4.13-stable
[pointer_size] => 64
[rusage_user] => 0.058991
[rusage_system] => 0.031995
[curr_connections] => 18
[total_connections] => 19
[connection_structures] => 19
[reserved_fds] => 20
.....
)

[127.0.0.1:11212] => Array
(
[pid] => 1801
[uptime] => 1636
[time] => 1403434908
[version] => 1.4.20
[libevent] => 1.4.13-stable
[pointer_size] => 64
[rusage_user] => 0.029995
[rusage_system] => 0.038994
[curr_connections] => 18
[total_connections] => 19
[connection_structures] => 19
[reserved_fds] => 20
.....
)

)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

灵芸 2017-10-04 04:44:11

getExtendedStats()得到的是memcached服务器的信息。第一个原因是可能有其他程序连接到memcache,所以看到的链接数比较多。第二个原因是memcached的线程数较大,因为每个线程都会开socket回监听端口,memcached会把这些socket也算进去。

根据你的描述,第二种情况可能性比较大。可以试一下用-t参数设置一下memcached的线程数看看效果。

而且不是19个链接,total_connections是memcached开始执行后总共的打开链接次数,curr_connections当前链接个数。关掉永久链接,刷新几次就能看到两者的变化。

因为你用了永久连接(addServer()第3个参数为真),所以可以看作整个php服务都使用这些链接。(永久连接个数可看phpinfo()里的Active persistent connections)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文