我正在開發一個使用 Unbuntu 10.04 建置的新伺服器,運行 php-fastcgi、nginx 和 memcached。
phpinfo() 腳本載入並運作良好,與測試 memcached 腳本相同。對於任何使用會話的腳本,頁面載入時間會急劇增加。
--- memcached.ini ---
extension=memcached.so
memcache.hash_strategy = "consistent"
memcache.max_failover_attempts = 100
memcache.allow_failover = 1
session.save_handler = memcached
session.save_path = "tcp://127.0.0.1:11211?persistent=1&weight=1&timeout=1&retry_interval=15"
如果您需要查看任何其他配置,請告訴我。
答案1
問題出在 memcache.so 和 memcached.so 之間的 session.save_path 語法:
extension=memcache.so
session.save_handler = memcache
session.save_path = "tcp://127.0.0.1:11211"
與
extension=memcached.so
session.save_handler = memcached
session.save_path = "127.0.0.1:11211"
注意memcache中的協議,memcached中沒有協議。
另外,請確保您確實擁有要加載的 .so。它們是兩個獨立的包,透過 apt-get 或 yum 或您使用的任何風格。
由於載入錯誤的模組或使用不正確的語法而導致的任何損壞都會導致 php 在嘗試使用會話機制時出現 30 秒的載入延遲,並最終逾時。
希望這可以節省某人一些時間。 ;-)
答案2
php 的 memcached 不是 php 的 memcache!它們是單獨的實現。
一個簡單的 'session.save_path = "127.0.0.1:11211"' 會帶給你什麼?或者
session.save_handler = memcache
session.save_path = "tcp://127.0.0.1:11211?persistent=1&weight=1&timeout=1&retry_interval=15"
請注意 save_handler 中缺少的“d”。
答案3
將 PHP 副檔名從 memcached.so 改為 memcache.so。這解決了所有滯後問題。不確定這是 Ubuntu 的錯誤還是我的設定的錯誤,但現在效果很好。