У меня есть класс обработчика сеанса, который вызывает session_write_close () в конце скрипта. Это гарантирует, что даже если выдается header () или exit (), данные сеанса сохраняются.
public function __destruct()
{
session_write_close();
}
Однако я заметил, что для одной из моих страниц AJAX два обновления сеанса фиксируются уровнем базы данных.
Я предполагаю, что страница [1] загружается и отправляет [2] AJAX-запрос. Этот [2] AJAX-запрос должен начать сеанс до того, как страница [1] сможет вызвать session_write_close()
.
После того, как страница [2] AJAX загрузила сеанс, затем страница [1] наконец сохраняет сеанс, а затем вскоре после того, как запрос [2] AJAX сохраняет свой сеанс - который перезаписывает первый!
Это может выглядеть так:
[1] page loads session
[1] page sends output
[2] ajax loads session
[1] page saves session
[2] ajax sends output
[2] ajax saves session
Что мне делать, чтобы убедиться, что одна страница не загружает сеанс до того, как другой сможет сохранить сеанс?