私は、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 または使用するフレーバーを介して 2 つの別々のパッケージになります。
間違ったモジュールをロードしたり、誤った構文を使用したりして破損が発生すると、セッション メカニズムを使用しようとする間に 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 のバグなのか、私の設定のバグなのかはわかりませんが、今は問題なく動作します。