2012-07-16 65 views
1

我用Homebrew做了我所有的安装,但在这里遇到了一些麻烦......libmemcached和PHP memcached库:在OS X上崩溃 - 超时?

所以我有一个PHP应用程序,无论出于什么原因都使用“memcache”和“memcached”模块。随你。

系统是OS X Lion,10.7.4。 Apache是​​苹果公司在操作系统Apache/2.2.21上发布的股票。我使用Homebrew的PHP 5.3.14。

我安装我需要的一切:

brew install libmemcached memcached php53 php53-memcache php53-memcached

和配置的东西 - 设置Apache httpd.conf指向PHP .so文件和内存缓存和memcached的扩展添加到我的php.ini

我加载我的应用程序...并崩溃httpd!

这里的崩溃转储我得到(长转储):https://gist.github.com/3125309

如果我brew uninstall libmemcached和弹跳的httpd,然后我就可以访问我的应用程序正常,但是memcached是不实际工作,因为它(DUR)不能找到libmemcached。

我真的想让memcached在本地正常工作,但我不确定这里发生了什么。这只是PHP的一个问题;我可以使用Python的python-memcached模块来访问它就好了(但我不确定它是否使用libmemcached)。

有什么想法?我没有看到任何看起来在崩溃转储:(有用

编辑:嗯,行号是有帮助这里的相关libmemcached源块:

#ifdef HAVE_SNDTIMEO 
    if (server->root->snd_timeout) 
    { 
    struct timeval waittime; 

    waittime.tv_sec= 0; 
    waittime.tv_usec= server->root->snd_timeout; 

    int error= setsockopt(server->fd, SOL_SOCKET, SO_SNDTIMEO, 
         &waittime, (socklen_t)sizeof(struct timeval)); 
    assert(error == 0); 
    } 
#endif 

所以这听起来像一个超时问题?但我的memcached是在本地主机上,它应该不会超时......除非它不是试图连接到正确的服务器可能。

不过,为什么要这样的原因一个完整的httpd崩溃?

EDIT2:我重新编译了SNDTIMEO和RCVTIMEO bo现在我很开心并且正在运行......但是,A)为什么配置脚本确定那些可以被启用,以及B)为什么会导致httpd崩溃?

+0

我刚刚构建了自己的libmemcached 1.0.9,并从PECL构建了最新版本的PHP memcached扩展,并得到了相同的结果。我觉得这可能是用户错误...? – ashgromnies 2012-07-17 00:47:10

回答

1

我能够通过构建我自己的libmemcached来解决这个问题,其中一部分代码依赖于RCVTIMEO和SNDTIMEO,然后根据该自定义libmemcached构建php-memcached。

我仍然不确定为什么我的系统报告当它们不起作用时,libDEMO和configureVR脚本可以使用SNDTIMEO和RCVTIMEO。这使得OS X自制软件版本无法使用。我很惊讶其他人没有遇到这个问题。