Вы используете стандартные файловые сессии PHP? PHP блокирует сеанс, когда вы выполняете session_start()
, и удерживает файл заблокированным до выхода из сценария, или вы делаете session_write_close()
.
Это позволяет предотвратить обслуживание любых ДРУГИХ страниц с поддержкой сеанса, поскольку они не могут получить доступ к файлу сеанса, пока не будет снята блокировка.
session_write_close () может вызываться в любой точке скрипта. Все, что он делает, это записывает массив _SESSION, как он есть в данный момент, но оставляет массив доступным для чтения. Вы всегда можете повторно открыть сеанс позже в сценарии, если вам необходимо внести какие-либо изменения.
По сути, у вас будет
<?php
session_start(); // populate $_SESSION;
session_write_close(); // relinquish session lock
.... dome some really heavy duty long computations
session_start();
$_SESSION['somekey'] = $new_val;