Использование одного и того же идентификатора сеанса в двух сценариях PHP одновременно

Я случайно обнаружил странную проблему с сеансами PHP.
Когда я запускаю два скрипта PHP, используя ИДЕННЫЙ идентификатор сеанса, второй скрипт застревает до первого завершения.
Я предполагаю, что это потому, что вы пытаетесь открыть тот же файл хранилища сеансов дважды. Но возможно, я не прав.
Вы никогда не поймаете этот эффект при нормальной работе сайта, потому что пользователь обычно не открывал две или более страниц одновременно.
Однако, если вы попытаетесь получить содержимое страницы того же сайта с помощью file_get_contents() , вы поймете эту проблему.
Кроме того, я копирую свои файлы cookie через контекст, поэтому file_get_contents() пытается повторно открыть тот же сеанс, который уже открыт в скрипте вызова.
В результате я запустил многопользовательский скрипт (около 5-10 минут), который также запрещает мне открывать любую новую страницу на том же сайте, используя тот же сеанс / логин.
Как я могу решить эту проблему? Вы когда-нибудь видели красивое решение?

Да, это называется «блокировка сеанса» и является нормальным в PHP.

Одним из решений является не использование сеансов, а просто настройка файлов cookie для требуемой постоянной информации.

Еще одно решение – реализовать собственный обработчик сеанса:

http://php.net/manual/en/session.customhandler.php

Подробное пошаговое описание пользовательских обработчиков сеансов MySQL приведено здесь:

http://phpmaster.com/writing-custom-session-handlers/

Я также нашел довольно простое решение этой проблемы. Мы можем использовать session_write_close(); чтобы разблокировать файл сеанса в сценарии 1, мы можем без каких-либо забот сделать любые curl_exec() file_get_contents() , curl_exec() и после того, как эти операции вернут сеанс session_start() . Проверено мной, работает как очарование!