Просто в качестве демонстрации попробуйте следующий код:
<code><?php
echo '<pre>';
ob_end_flush();
for($i=0;$i<2;$i++) {
passthru("ping -n 8 127.0.0.1");
@ob_flush();
}
echo '
';
?>
Это вывод:
Pinging stackoverflow.com [64.34.119.12] with 32 bytes of data:
Reply from 64.34.119.12: bytes=32 time=28ms TTL=56
Reply from 64.34.119.12: bytes=32 time=29ms TTL=56
Reply from 64.34.119.12: bytes=32 time=29ms TTL=56
Reply from 64.34.119.12: bytes=32 time=28ms TTL=56
Ping statistics for 64.34.119.12:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 28ms, Maximum = 29ms, Average = 28ms
Pinging stackoverflow.com [64.34.119.12] with 32 bytes of data:
Reply from 64.34.119.12: bytes=32 time=28ms TTL=56
Reply from 64.34.119.12: bytes=32 time=27ms TTL=56
Reply from 64.34.119.12: bytes=32 time=26ms TTL=56
Reply from 64.34.119.12: bytes=32 time=29ms TTL=56
Ping statistics for 64.34.119.12:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 26ms, Maximum = 29ms, Average = 27ms
На самом деле он делает это дважды (что из цикла "меньше 2"). Если вы протестируете сценарий, вы заметите, что для создания первого требуется несколько секунд, а затем он выводит все сразу. После этого (второй цикл) он идет построчно. Моя цель состоит в том, чтобы иметь один выход, идти построчно и не буферизовать какие-либо выходные данные, как показано ниже, за исключением случаев, когда это происходит:
<?php
system("ping -n 8 127.0.0.1");
?>
Примечание: это работает на сервере Windows с PHP 5.