Подтвердить что ты не робот

Как установить тайм-аут сеанса в Laravel 4.2?

Есть ли способ, чтобы установить сеансы истечения через определенное время. Моя текущая установка, кажется, истекает через 30 минут, и я хотел бы отключить ее или хотя бы увеличить ее, но я не могу найти места в Laravel, где это можно было бы установить?

4b9b3361

Ответ 1

Проверьте php.ini, он имеет значение session.gc_maxlifetime (а также session.cookie_lifetime), который устанавливает ограничение на то, как долго PHP будет продолжать сеансы. Когда Laravel устанавливает параметры, он передает cookie_lifetime как значение, установленное в app/config/session.php.

Однако сеансы не истекли сразу после достижения максимального времени жизни. Что происходит, после того, как этот промежуток времени прошел сеанс, тогда его можно удалить сборщиком мусора.

Чтобы решить проблему

Один способ обхода - проверить файл php.ini. Вы можете определить эту переменную: session.gc_maxlifetime. По умолчанию установлено значение 1440. Просто прокомментируйте или удалите его.

С этого момента ваш сеанс может корректно работать с вашими значениями конфигурации session.php.

Ответ 2

В app/config/session.php у вас есть:

lifetime

который позволяет установить время окончания сеанса в минутах (не в секундах)

'lifetime' => 60,

означает, что сеанс истечет через час.

Здесь также есть еще одна настройка:

'expire_on_close' => true,

который решает, будет ли срок действия сеанса истек, когда браузер будет закрыт.

Другие настройки, которые могут вас заинтересовать, также php.ini значения:

session.cookie_lifetime = 0

и

session.gc_maxlifetime = 1440

Это значения по умолчанию.

Первый означает, как будет храниться длительный сеанс cookie - значение по умолчанию равно 0 (пока просмотр не будет закрыт). Второй вариант означает, что количество секунд PHP может уничтожить данные сеанса.

Я сказал, может быть, потому что есть еще один вариант session.gc_probability в файле php.ini, который решает, какую вероятность запускать сборщик мусора. По умолчанию существует только 1% вероятность того, что после 1440 секунд (24 минуты) данные сеанса будут уничтожены.

Ответ 3

Поддержка родной поддержки PHP была отброшена, начиная с Laravel 4.1

Чтобы настроить редактирование времени сеанса app/config/session.php и установите следующее:

/* if this is set to 'native' it will use file.
   if this is set to 'array' sessions will not persist across requests
   effectively expiring them immediately.
*/ 
'driver' => 'file'

/* number of minutes after which the session is available for Laravel's
   built in garbage collection.
   Prior to 4.1 you could set this to zero to expire sessions when
   the browser closes. See the next option below.
*/
'lifetime' => 60

/* If true sessions will expire when the user closes the browser.
   This effectively ignores your lifetime setting above.
   Set to false if you want Laravel to respect the lifetime value.
   If your config file was written before 4.1 you need to add this.
*/
'expire_on_close' => false,

Литература:

Запустите artisan changes 4.1.* в командной строке, чтобы увидеть примечание о сценарии сеанса native, эквивалентном file

$ artisan changes 4.1.* | grep -i native
-> Native session driver has been replaced by 'file'. Specifying 'native' driver will just use the new file driver.

Ответ 4

App\Config\Session.php

проверить на время жизни...

вы также можете установить...

Cookie::make('name', 'value', 60); // 1 hr