Я пытаюсь запустить два экземпляра PHP-скрипта одновременно. У меня есть сценарий «test.php»:
<p><?php echo time(); ?> Sleeping...</p> <?php sleep(5); ?> <p><?php echo time(); ?> done</p>
Если я загружаю страницу на две вкладки браузера одновременно, я получаю следующее:
1446855680 Спящий …
1446855685 сделано
и это:
1446855686 Спящий …
1446855691 сделано
Один экземпляр блокируется до других нагрузок. Это происходит как на Firefox, так и на Chromium.
Если я сделаю второй идентичный скрипт «test2.php» или переписал два URL-адреса одному сценарию и загрузил две страницы на разных вкладках, я получаю следующее:
1446855862 Спящий …
1446855867 сделано
и это:
1446855863 Спящий …
1446855868 сделано
Оба экземпляра загружаются одновременно. Таким образом, это идентичные URL-адреса, которые блокируются.
Как я могу получить два экземпляра сценария с одним и тем же URL для загрузки и запуска одновременно?
Как отметил VolkerK, и ваше тестирование подтвердило, что Firefox / Chrome выполняет запросы для одного и того же URL-адреса последовательно. Однако на практике это не проблема, так как пользователи обычно не загружают одну и ту же страницу дважды, а для скрипта, который обслуживает данные для Ajax, запросы будут отличаться, поскольку различные параметры добавляются.
Если вы хотите обойти этот механизм, вы можете добавить случайный параметр (должен быть другим в разных вкладках браузера) к URL-адресу, то есть url.to/your/script?urlID=4821de7e524cf762deab6ed731343466
. Случайный параметр заставляет браузер видеть два разных URL-адреса и, следовательно, выполнять параллельную загрузку.