Страница 1 из 1

Как сделать, чтобы php не ждал завершения предыдущего потока?

Добавлено: 25 янв 2017, 15:12
DTX
Есть страница:
echo 'Start: '.date('c');
echo '<br/>';
sleep(5);
echo 'End: '.date('c');
Если открыть две таких страницы, то вторая будет ждать завершение первой.

Изображение

Как сделать так, чтобы запускался второй поток php?

Если залить подобный пример на хостинг, то такой проблемы не будет.

Re: Как сделать, чтобы php не ждал завершения предыдущего потока?

Добавлено: 28 янв 2017, 23:11
Martyrer
На самом деле дело не в PHP..
Изначально я предположил что дело в блокировке файла сессии в PHP, но судя по коду и дефолтной конфигурации OSP, в которой отключен автоматический старт сессии я исключил этот вариант.
Сделав несколько экспериментов, я пришел к выводу, что дело в браузере. Если вы ничего не меняя откроете Developer Tools хрома и поставите в обоих окнах галочку Disable Cache вы увидите как запросы перестанут блокировать друг друга и будут работать именно так, как вы ожидаете.

Re: Как сделать, чтобы php не ждал завершения предыдущего потока?

Добавлено: 30 янв 2017, 12:51
DTX
Не помогло.. А я уже успел было обрадоваться)
Даже вынес код из фреймворка в index.php:
<?php
echo 'Start: '.date('c');
echo '<br/>';
sleep(5);
echo 'End: '.date('c');
Изображение

Re: Как сделать, чтобы php не ждал завершения предыдущего потока?

Добавлено: 30 янв 2017, 13:07
DTX
Похоже, это как-то связано с xdebug.
Изменил PHP 5.6 на PHP 5.5 и всё заработало.

Спасибо!

Re: Как сделать, чтобы php не ждал завершения предыдущего потока?

Добавлено: 31 янв 2017, 10:33
Martyrer
Хм, интересно, у меня даже с включенным xDebug работает (если поставить галочку disable cache) .. без нее ситуация ровно такая же как у вас.

Re: Как сделать, чтобы php не ждал завершения предыдущего потока?

Добавлено: 31 янв 2017, 12:22
Максим
Зачем играете в детектива. Хром не даёт делать одновременные запросы на одинаковый адрес, а во вторых может срабатывать блокировка сессии если они используются в запрашиваемом скрипте. Обо всём этом уже написали выше.