Истекает сессия

Где я могу установить время окончания сессии по умолчанию в 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();
Другие вопросы по тегам