PHP-memcache长连接的疑问
请问各位高手,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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
getExtendedStats()得到的是memcached服务器的信息。第一个原因是可能有其他程序连接到memcache,所以看到的链接数比较多。第二个原因是memcached的线程数较大,因为每个线程都会开socket回监听端口,memcached会把这些socket也算进去。
根据你的描述,第二种情况可能性比较大。可以试一下用-t参数设置一下memcached的线程数看看效果。
而且不是19个链接,total_connections是memcached开始执行后总共的打开链接次数,curr_connections当前链接个数。关掉永久链接,刷新几次就能看到两者的变化。
因为你用了永久连接(addServer()第3个参数为真),所以可以看作整个php服务都使用这些链接。(永久连接个数可看phpinfo()里的Active persistent connections)