Как добавить flashdata после session_write_close () - PullRequest
0 голосов
/ 16 апреля 2019

Я обновил свое приложение с CI2 до CI3 (CI v3.1.9 и PHP7). Теперь у меня проблема с производительностью новой системы параллелизма в сеансе (см. doc ).

Некоторые действия в приложении очень длинные (например, из-за вызова внешнего API, на ответ на который может потребоваться несколько минут), и я не хочу, чтобы эти действия блокировали сеанс. Как рекомендовано, я бы использовал session_write_close() функцию в контроллере, прежде чем выполнять очень продолжительное действие.

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

У кого-нибудь есть рекомендации, как этого добиться?

Если я снова начинаю сеанс с session_start(), он работает, но я понятия не имею, лучше ли использовать такой сеанс PHP с Codeigniter.

1 Ответ

0 голосов
/ 18 апреля 2019

Нет проблем с повторным запуском сеанса с использованием session_start().Класс CodeIgniter «Session» все еще загружен, а экземпляр все еще действителен.Так что все "специальные" вещи, которые CI делает для работы сессий, хороши.

Я протестировал, а затем использовал эту схему в проекте некоторое время назад и не испытывал никаких проблем.Не было никакого удара от клиента все еще действующего сайта.YMMV.

Кстати, в функции __construct() класса CI_Session выполняется вызов session_start() для запуска расширения сеанса PHP.Поэтому делать этот призыв явно не является «плохой» практикой.:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...