2013-05-24 2 views
1

Я пытаюсь использовать несколько запросов на завихрение потока в своем приложении. Проблема заключается в том, что во время запросов curl_multi приложение перестает отвечать (другие запросы к нему просто ждут). Более того, никто не может использовать сайт во время curl_multi. После завершения завитки сервер отвечает только нормально.Apache не отвечает во время php curl_multi

+0

Учитывая, что PHP не является интерактивным языком, я не могу понять, какую реакцию вы ожидаете получить. (Кроме того, вы уверены, что ваш код не имеет ничего общего с вашей проблемой?) –

+0

Я пересматриваю несколько элементов на eBay с php и curl_multi. У меня очень много элементов, и я написал строку состояния, которая соединяется с базой данных и возвращает мне количество оставшихся элементов для пересмотра. Но проблема в том, что сервер не отвечает до тех пор, пока не будет завернут завиток. –

+0

Вот как работают серверные языки ... только после завершения первой команды это будет продолжаться до следующего –

ответ

4

Это не связано с curl_multi, а вместо этого - с PHP-сессиями.

Вы делаете два запроса:

  1. один, что делает завиток запросы, которые длятся долго
  2. И второй запрос.

Первый запрос открывает сеанс php и блокирует его. Затем он выполняет запросы на завивание, которые занимают некоторое время.

Второй запрос ожидает освобождения сеанса php, то есть он ожидает завершения первого запроса.

Любой другой запрос также ожидает выхода сеанса php, и поэтому он выглядит так: приложение не отвечает.

Растворы:

  • избежать длинных выполняющихся сценариев
  • или закрыть сессию до тех пор, запуск сценариев, по телефону session_write_close()

См PHP download blocks rest of requests

+0

спасибо! Это сработало!! –