我很确定这是一个CakePHP错误,但是想到这里有人可能已经碰到了这个并知道如何修复。仅供参考 - 我创建了ticket。
我通过php5-fpm在nginx下运行PHP作为fastcgi。当我使用'Memcache'作为蛋糕缓存的引擎时,我注意到TCP连接没有关闭。我注意到蛋糕的MemcacheEngine并没有调用PHP memcache::close()。
对于在非fastcgi进程下运行PHP的人,我认为这是正常的,因为在PHP请求结束时进程结束,并“中断”PHP和memcached之间的TCP连接。
使用php5-fpm并非如此,因为PHP进程一直在运行以便重用。
有谁知道这方面的最佳做法?我正在考虑修改CakePHP代码以在处理结束时关闭连接 - 但我想知道是否有更好的方法。
注意:CakePHP的MemcacheEngine不使用pconnect。
我的版本信息:
Ubuntu 10.10 64bit
PHP 5.3.3
PECL memcache 3.0.5
memcached 1.4.5
cakephp 1.3.8
答案 0 :(得分:2)
原来MemcacheEngine使用Memcache::addServer(),默认情况下使用持久性。它正确地重用了我的FPM子节点和我的memcached池之间的连接。
Cake现在添加了一个'persistent'选项,允许覆盖那些希望的人的默认行为: http://cakephp.lighthouseapp.com/projects/42648/tickets/1705-cake-138-memcacheengine-does-not-close-connection