Протокол HTTP реализует взаимодействие между клиентом и сервером по принципу «запрос-ответ», однако для работы реальных приложений этого недостаточно. В ряде случаев HTTP-сервер должен сохранять информацию о клиенте, чтобы использовать ее при следующих запросах. Таким образом, HTTP-сервер должен уметь идентифицировать конкретного клиента. Примеры, когда это может потребоваться:
· Авторизация доступа;
· Сложный пользовательский интерфейс (когда есть зависимости между формами ввода).
Для решения этой задачи PHP предлагает механизм сессий.
Сессия – это временной период, в течение которого конкретный пользователь взаимодействует с HTTP-сервером. Сессия начинается с момента первого запроса клиента и завершается:
· При явном указании на то клиента (например, нажали кнопку «Завершить работу»);
· При закрытии клиентского приложения (браузера);
· При длительном отсутствии активности клиента (истечение таймаута, в течение которого от клиента не было ни одного запроса).
В PHP пользовательская сессия идентифицируется путем присвоения ей уникального 32-байтного идентификатора (SID, Session IDentifier), например: af65756756fghgfuyiu890tyi0iu7780.
SID передается на сервер с каждым запросом клиента и возвращается клиенту с ответом сервера.
Механизм сессий в PHP позволяет определить конкретную сессию и сохранять переменные, связанные с данной сессией, в течение всего периода работы клиента в рамках данной сессии.
Переменные сессий хранятся в файлах на сервере. В файле настроек PHP – php.ini должен быть задан параметр session.save_path, в котором указывается, в каком каталоге будут храниться файлы с переменными сессий. Для каждой сессии создается свой файл. Может так оказаться, что файлов сессий в процессе работы создано очень много, что может повлиять на производительность сервера (требуется искать файлы в большом каталоге). Этого можно избежать, указав в параметре session.save_path перед именем каталога, целое число и символ ;. Это целое число будет определять глубину вложенности подкаталогов, создаваемых для хранения файлов с переменными сессий.