вывод текущего прогресса в php-скрипте (буферах)? - PullRequest
1 голос
/ 25 февраля 2012

Я пытаюсь обновить пользователей сценариев о его прогрессе, вместо того, чтобы ждать его полного выполнения.

Например, я вызываю разные веб-ссылки для получения определенных сообщений (веб-службы REST).

Возможно, мне понадобится позвонить по 10-20 URL-адресам, поэтому я хочу обновить пользователей о состоянии каждого URL-адреса после его получения и не ждать завершения всех 10-20.

Попробовал следующее:

ob_start();

while(xxx):  
  $result = call_url($url); // my custom function of performing web service call
  echo $result;
  ob_flush(); 
endwhile;

Не соответствует ожидаемому .... Любая подсказка?

1 Ответ

2 голосов
/ 25 февраля 2012

Когда вы запускаете этот цикл, печать в браузер не асинхронная.Он может печататься только после завершения цикла.

Я бы посоветовал вам использовать Ajax Queue и запускать эти вызовы один за другим.Ajax является асинхронным только в том случае, если вы можете обновлять своих пользователей.

Или вы можете записывать в файл некоторые хорошие метаданные после каждой итерации цикла, которые вы можете передавать в Observer, который снова является вызовом Ajax для чтения этого файла ипоказать прогресс пользователю

...