Я работаю над новым сервером, созданным на базе 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
Проблема в синтаксисе session.save_path между memcache.so и memcached.so:
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 или любую другую разновидность, которую вы используете.
Любая ошибка, вызванная загрузкой неправильного модуля или использованием неправильного синтаксиса, приводит к 30-секундной задержке загрузки в PHP, пока он пытается использовать механизм сеанса, и в конечном итоге происходит тайм-аут.
Надеюсь, это сэкономит кому-то время. ;-)
решение2
Memcached php - это НЕ memcache php! Это отдельные реализации.
Что вам даст простое '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"
Обратите внимание на отсутствующую букву «d» в save_handler.
решение3
Измените расширение PHP с memcached.so на memcache.so. Это решает все проблемы с задержками. Не уверен, баг ли это Ubuntu или ошибка моей настройки, но теперь все работает отлично.