сессия истекает в веб-сайте пекаря - PullRequest
1 голос
/ 05 января 2011

Где я могу установить время окончания сеанса по умолчанию в WebsiteBaker ?По умолчанию уничтожается за 10 минут.Я хочу установить больше минут / часов в период разработки, а затем изменить значение по умолчанию или на x MINS.

Пожалуйста, помогите мне дождаться вашего ответа.

Спасибо

Ответы [ 3 ]

1 голос
/ 22 декабря 2011

Websitebaker, по крайней мере, в текущей версии 2.8.2 и в готовящейся к выпуску версии 2.8.3 полностью зависят от настроек сервера для продолжительности сеанса.

Если вам нужны другие настройки сеанса, вы можете добавить свои настройки в config.phpнезадолго до этого:

 require_once(WB_PATH.'/framework/initialize.php');

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

Другой вариант - использовать файл .htaccess или изменить настройки сервера.

0 голосов
/ 05 января 2011

Я полагаю, вы сами не меняли его (иначе, я думаю, вы бы помнили, как вы это сделали), и 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();
0 голосов
/ 05 января 2011

Я ничего не знаю о пекаре веб-сайта, поэтому найдите, где начинается сессия (в вашем проекте найдите все файлы для 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-файл сеанса удаляется браузером, тоПри вызове session_start(); php выдаст еще один идентификатор сеанса, поэтому нам все равно, будет ли последний сеанс считаться живым / активным, поскольку в вашем скрипте php у вас будет пустой $_SESSION.Кроме того, вы можете установить ini_set('session.gc-maxlifetime', 10);, чтобы предыдущие сеансы удалялись сборщиком мусора в случае, если вы сохраняете сеансы на диске.

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