Я пытаюсь получить два экземпляра сценария 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, т.е. url.to/your/script?urlID=4821de7e524cf762deab6ed731343466
, Случайный параметр заставляет браузер видеть два разных URL-адреса и, следовательно, выполнять загрузку параллельно.
Других решений пока нет …