2015-09-22 3 views
0

В настоящее время я использую бэкэнд базы данных для хранилища сеансов CodeIgniter. Я хотел бы отойти от хранения информации о сеансе в базе данных и хотел бы перейти на использование бэкэнда файловой системы. Однако я бы не потерял все свои сеансы. Есть ли способ перехода от одного к другому без потери данных сеанса?Миграция CodeIgniter3 session backends

ответ

1

Обычный способ, как это сделать, - создать обработчик сеанса перехода, который сначала будет выглядеть в одном хранилище (я лично предпочитаю новую файловую систему), и если он не найдет его там, он рассмотрит старый (база данных).

Это приводит к временному состоянию, в котором существующие сеансы будут по-прежнему считаться из базы данных. Когда они истекут, новые будут создаваться в файловой системе.

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

Посмотрите на https://secure.php.net/manual/en/session.customhandler.php для получения дополнительной информации, как реализовать пользовательский обработчик.

+0

Я взломал временную замену файловой базы, которая делает именно это. Благодарим за ваше предложение. – Mala

+0

Если кому-то еще это нужно, код, который я использовал, можно найти здесь: http://pastebin.com/AqiSzs7t (просто найдите «// UPDATE», чтобы найти измененные биты). Предполагается, что таблица сеансов называется «ci_sessions», и она не делает блокировки db или что-то еще, но я полагаю, что поскольку это будет срабатывать не более одного раза за сеанс, риски, вызванные неправильной блокировкой таблиц db, не перевешивают мое желание заснуть. – Mala

Смежные вопросы