Користувальницькі обробники сесії

Для реалізації сховища даних (або будь-якого іншого сховища) слід використовувати session_set_save_handler(), щоб створити набір функцій користувача сховища. Обробники сесій можна створити, використовуючи клас SessionHandlerInterface, або розширити внутрішні обробники PHP, успадкувавши клас SessionHandler

Функції зворотного дзвінка, зазначені в session_set_save_handler(), є методами, що викликаються PHP протягом життєвого циклу сесії: open read writeиclose та для службових завдань: destroyдля удаления сессии иgc для періодичного складання сміття.

Отже, у PHP завжди необхідні обробники, які зберігають сесії. За промовчанням працює внутрішній обробник 'files', що зберігає сесії у файли. Користувальницький обробник може бути встановлений, використовуючи функцію session_set_save_handler(). Альтернативні обробники для збереження сесії також доступні в PHP модулях, таких як sqlite memcacheиmemcached і можуть бути встановлені за допомогою session.save_handler

Коли стартує сесія, PHP внутрішньо викличе обробник open з наступним викликом оброблювача read, який повинен повернути закодований рядок - точно такий, який передавався для збереження. Після повернення обробником read закодованого рядка, PHP декодує її і заповнить масивом, що вийшов, суперглобальний масив $_SESSION

Коли PHP завершує виконання скрипта (або коли викликана функція session_write_close()), PHP внутрішньо закодує суперглобальний масив $_SESSION, та передасть ці дані з ідентифікатором сесії функції зворотного виклику write. Після того, як відпрацює функція зворотного дзвінка write, PHP внутрішньо викликає обробник функції зворотного виклику close

Коли сесія спеціально знищена, PHP викличе обробник destroy з ідентифікатором сесії

PHP буде викликати обробник функції зворотного виклику gc час від часу, щоб помітити сесії як минулі відповідно до часу життя сесій. Ця операція видаляє всі записи зі постійного сховища, доступ до яких не здійснювався більш ніж інтервал часу, зазначений у параметрі $lifetime