Истекает сессия
Где я могу установить время окончания сессии по умолчанию в WebsiteBaker? По умолчанию уничтожается за 10 минут. Я хочу установить больше минут / часов в период разработки, а затем хочу изменить значение по умолчанию или x MINS.
Пожалуйста, помогите мне ждать вашего ответа.
Спасибо
3 ответа
Websitebaker, по крайней мере, в текущей версии 2.8.2 и в готовящейся к выпуску версии 2.8.3 полностью зависят от настроек сервера в течение всего времени жизни сессии.
Если вам нужны другие настройки сеанса, вы можете добавить свои настройки в config.php непосредственно перед:
require_once(WB_PATH.'/framework/initialize.php');
Это работает только в том случае, если ваш сервер разрешает переопределения по сценарию.
Другой вариант - использовать файл.htaccess или изменить настройки сервера.
Я ничего не знаю о пекаре веб-сайта, поэтому найдите, где начинается сессия (в вашем проекте ищите все файлы для session_start();), затем перед этой строкой вы можете использовать:
//first parameter expects the number of seconds session cookie should be kept by the
//browser , in our case 10 seconds
session_set_cookie_params(10);
Или другой вариант, добавьте эту строку в корень вашего веб-приложения для пекарей ( index.php), и вы должны быть готовы к работе.
Примечания: если cookie сессии удаляется браузером, то php выдаст другой идентификатор сессии, когда вы звоните session_start();
, так что нам все равно, если последний сеанс все еще считается живым / активным, так как в вашем PHP-скрипте у вас будет пустой $_SESSION
, Дополнительно вы можете установить ini_set('session.gc-maxlifetime', 10);
так что предыдущие сеансы будут удалены сборщиком мусора в случае, если вы сохраните сеансы на диске.
Я предполагаю, что вы сами не меняли его (иначе, я думаю, вы бы помнили, как вы это сделали) и 10 минут выглядят как странное значение по умолчанию Я бы осмелился сказать, что вы размещаете свое приложение на общем сервере, данные сеанса хранятся в общем расположении по умолчанию, и есть какое-то другое приложение от другого клиента, для которого установлено меньшее время жизни сеанса. Эта проблема возникает из-за того, что данные сеанса не учитывают сайт: когда сборщик мусора PHP удаляет файлы сеанса, к которым не было доступа в течение 10 минут, он удаляет все файлы в каталоге; у него нет возможности узнать, к какому веб-сайту они принадлежат.
Я не могу рассказать вам, как это исправить в WebsiteBaker, но в обычном PHP вам нужно установить собственный каталог сеанса в вашей учетной записи. Тогда (и только тогда) вы будете иметь полный контроль над своими собственными данными сеанса:
session_save_path('/home/users/foo/sessions');
ini_set('session.gc_maxlifetime', 3*60*60); // 3 hours (or whatever you need)
ini_set('session.gc_probability', 1);
ini_set('session.gc_divisor', 100);
session_start();