Как работает собственный драйвер сеанса Laravel 4?

Я все время использую серверные драйверы сеанса, предоставляемые замечательной структурой Laravel4. Официальный документ говорит:

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

И на самом деле я оставляю драйвер по умолчанию, и он фантастически работает со всеми моими сессиями. Итак, я выпускаю свое приложение без каких-либо проблем.
Мне нужно понять «волшебство» родного драйвера, чтобы сравнить его со всеми другими доступными вариантами.

Итак, мой вопрос: как именно работает собственный драйвер сеанса Laravel 4 ??

Любая помощь приветствуется.


person Javier Cadiz    schedule 04.06.2013    source источник
comment
как собственный сеанс php: сохраняет идентификатор сеанса в файле cookie браузера, который он использует для доступа к данным сеанса во временном файле сеанса на стороне сервера в файловой системе. Когда сеанс PHP активен, он блокирует другие попытки доступа к тому же сеансу, пока этот сеанс не будет завершен (асинхронный ajax невозможен с данными сеанса).   -  person Imre L    schedule 04.06.2013


Ответы (3)


Реальное преимущество использования собственного драйвера заключается в том, что он не требует дополнительной настройки. Если у вас есть установка PHP на сервере и вы предоставляете папке /app/storage/sessions правильные разрешения, она просто будет работать.

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

Также обратите внимание, что он не использует файлы cookie для хранения данных вашего сеанса (однако это тоже вариант, изменив ваш драйвер на cookie. Однако он использует файл cookie для отслеживания вашего идентификатора сеанса — как это делают все драйверы сеанса.

person tplaner    schedule 05.06.2013

Хотя этот вопрос давно закрыт, этот пост, похоже, имеет высокий рейтинг с ключевыми словами «сеанс laravel».

Напомню другим об одном:

  • Laravel 4.0 использует «нативный» драйвер — сеансы будут обрабатываться внутренними средствами сеанса PHP.

  • Laravel 4.1 и 4.2 использует драйвер «файл» — сеансы будут храниться в приложении/хранилище/сеансах. Больше не поддерживает «родной» драйвер. (Вы не можете выбрать его.)

Итак, если вы хотите использовать собственный сеанс PHP, скажем, функцию «session.upload_progress», вы просто используете session_start(), а затем используете исходный $_SESSION.

ознакомьтесь с официальной документацией:

http://laravel.com/docs/4.0/session

http://laravel.com/docs/4.1/session

http://laravel.com/docs/4.2/session

person 尤川豪    schedule 31.03.2015
comment
Кстати, session.upload_progress сложно настроить. Если у вас есть какие-либо проблемы с этим, это должна быть проблема родного PHP, а не проблема Laravel. - person 尤川豪; 01.04.2015

Это именно то, о чем говорит название :) родной драйвер сеанса использует собственный механизм php для хранения сеанса (куки) - laravel использует для этого laravel/vendor/symfony/http-foundation\Symfony/Component/HttpFoundation/Session/Storage/NativeSessionStorage.php.

person Ochi    schedule 04.06.2013