Этот цикл не повторяет мою строку - PullRequest
0 голосов
/ 17 декабря 2009

У меня есть бесконечный цикл, который я хочу спать на секунду, но браузер просто зависает и ничего не слышно. Может кто-нибудь сказать мне, почему?

while(1)
{
    sleep(1);
    echo 'test'.'<br>';
}

Ответы [ 4 ]

2 голосов
/ 17 декабря 2009

Вы можете попробовать очистить буфер вывода с помощью flush(), но не гарантированно будет работать .

Попробуйте эту функцию из PHP.net :

function flush_buffers() { 
    ob_end_flush(); 
    ob_flush(); 
    flush(); 
    ob_start(); 
} 
2 голосов
/ 17 декабря 2009

Не будет работать, пока сервер не прекратит обработку.

1 голос
/ 17 декабря 2009

Это потому, что PHP отправляет данные в браузер большими порциями. Все дело в оптимизации: отправка небольших данных отрицательно сказывается на производительности, вы хотите, чтобы они отправлялись достаточно большими блоками, чтобы затраты на их передачу (как по скорости, так и по фактическому трафику) были относительно низкими. Пара маленьких струн просто недостаточно велика. Попробуйте добавить flush() сразу после echo, это заставит PHP отправить эту строку в браузер.

0 голосов
/ 17 декабря 2009

Потому что это бесконечный цикл, он никогда не отправит ответ или не прервется

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...