2012-07-16 69 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自制軟件版本無法使用。我很驚訝其他人沒有遇到這個問題。