Единственная лучшая причина для хранения сеансов в базе данных - это возможность сбалансировать нагрузку на свой сайт. Таким образом, не имеет значения, какой сервер раздает следующую страницу, поскольку все они используют одну и ту же базу данных для хранения своих сеансов.
Посмотрите на PHP set_save_handler () , чтобы узнать, как установить пользовательский обработчик сеанса. Требуется около 30 строк для установки одной, которая помещает сеанс в базу данных, хотя это не учитывает количество строк, чтобы сделать достойный обработчик базы данных. :-) Вам нужно будет сделать:
ini_set('session.save_handler', 'user');
ini_set('session.auto_start', '0');
... хотя session.auto_start
должен быть в вашем php.ini (и установить в 0).
Если доступ к базе данных будет немного дороже, есть и другие вещи, которые вы можете сделать, чтобы смягчить это. Очевидным является наличие сервера БД, который просто для сеансов. Другой трюк состоит в том, чтобы заставить его совать вещи в memcache и в DB, поэтому, когда он проверяет, отсутствует ли запись memcache, он просто возвращается к DB. С этим вы тоже можете пофантазировать и разделить сеанс так, чтобы часть его находилась в memcache, а остальное - в базе данных. Я думаю, что вам нужно поставить свои собственные функции доступа поверх API сессии PHP.