Настройка Zend_Session с помощью Zend_Application - PullRequest
1 голос
/ 02 марта 2010

Итак, я создал шаблон сайта с помощью Zend_Tool и добавил эти параметры в application.ini

resources.session.saveHandler.class = "Zend_Session_SaveHandler_DbTable"
resources.session.saveHandler.options.name = "session"
resources.session.saveHandler.options.primary.session_id = "session_id"
resources.session.saveHandler.options.primary.save_path = "save_path"
resources.session.saveHandler.options.primary.name = "name"
resources.session.saveHandler.options.primaryAssignment.sessionId = "sessionId"
resources.session.saveHandler.options.primaryAssignment.sessionSavePath = "sessionSavePath"
resources.session.saveHandler.options.primaryAssignment.sessionName = "sessionName"
resources.session.saveHandler.options.modifiedColumn = "modified"
resources.session.saveHandler.options.dataColumn = "session_data"
resources.session.saveHandler.options.lifetimeColumn = "lifetime"

Кажется, проблема не в ресурсе сеанса или в вызываемом saveHandler, а в том, что PHP / Zend даже не пытается настроить мой сеанс в базе данных.

Я не получаю ошибок, если не удалю опцию, требуемую ресурсом сеанса, и не поместил проверки в разные классы Zend, чтобы проверить, запускаются ли они; которые они есть.

Мое текущее предположение заключается в том, что мне нужно что-то изменить в php.ini, чтобы Zend_Session мог переопределить обработку сеанса по умолчанию. Я использую Zend Server для этого теста.

Ответы

Я проверил session.auto_start, и он был установлен на 0.

Я также проверил это, не используя никаких обработчиков базы данных, и вместо этого просто попытался изменить путь, который также не удался.

Из того, что я могу сказать с помощью моих настроек, вызывается конструкция Zend_Session_SaveHandler_DbTable :: __, а мои настройки resources.db находятся выше моего сеанса и работают для всего остального.

Помимо всего этого, в настоящее время у меня неправильно настроены данные saveHandlers.options, и я видел другие публикации в StackOverflow, которые касаются ошибок из-за неправильных настроек saveHandler.

Как я уже говорил выше, я думаю, что это как-то связано с тем, что PHP не вызывает переданные функции для обработки сеанса. Я знаю, что если вы хотите настроить собственное управление сеансом, вы можете подключиться к этим вызовам и предоставить функции обратного вызова, которые будут выполняться в каждом состоянии (открытое закрытое чтение, запись и т. Д.).

Я просто недостаточно знаю о настройках PHP.ini, чтобы знать, есть ли конкретные настройки, которые необходимо включить, чтобы можно было изменять управление сеансом.

Ответы [ 2 ]

2 голосов
/ 02 марта 2010

Попробуйте это в своей начальной загрузке:

protected function _initForceSession()
{
    $this
            ->bootstrap('db')
            ->bootstrap('session');
}

Вы также можете попробовать применить мой патч к Zend_Session, чтобы увидеть, что сессия уже запущена и вы не можете изменить обработчик сохранения: http://framework.zend.com/issues/browse/ZF-7915. Я не помню все детали, но в этих компонентах есть некоторая несовместимость ...

2 голосов
/ 02 марта 2010

При использовании обработчика БД для сеансов необходимо убедиться, что БД инициализирована до Ресурса сеанса . Соединение БД будет установлено на обработчик как адаптер во время начальной загрузки. Если это не решает проблему, попробуйте настроить обработчик Session вручную , а также , убедитесь, что session.auto_start отключен в PHP.ini

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...