Назад | Перейти на главную страницу

memcached и PHP ... большая задержка с сессиями

Я работаю над новым сервером, построенным на 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"

Дайте мне знать, если вам понадобятся другие конфиги.

Проблема заключается в синтаксисе session.save_path между memcache.so и memcached.so:

extension=memcache.so
session.save_handler = memcache
session.save_path = "tcp://127.0.0.1:11211"

vs.

extension=memcached.so
session.save_handler = memcached
session.save_path = "127.0.0.1:11211"

Обратите внимание на протокол в memcache, протокол в memcached отсутствует.

Также убедитесь, что у вас действительно есть файл .so, который вы пытаетесь загрузить. Это два отдельных пакета через apt-get или yum или любой другой аромат, который вы используете.

Любой сбой из-за загрузки неправильного модуля или использования неправильного синтаксиса вызывает 30-секундную задержку загрузки в php, пока он пытается использовать ваш механизм сеанса и в конечном итоге истекает.

Надеюсь, это кому-то сэкономит время. ;-)

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.

Измените расширение PHP с memcached.so на memcache.so. Это решает все проблемы с задержками. Не уверен, ошибка ли это в Ubuntu или в моей настройке, но теперь она отлично работает.