2012-04-27 4 views
0

Я пытаюсь реализовать простой цикл while на моем сервере WAMP, если строка повторяется определенное количество раз. Однако весь вывод происходит сразу, несмотря на то, что вы отключили буферизацию вывода в настройках WAMP PHP.WAMP и flush()

Версия 1

$i = 0; 
while ($i < 5) 
{ 
print ("This is an example of a while loop.<br/>"); 
flush(); 
sleep(1); 
$i++; 

} 

версия 2

$i = 0; 
while ($i < 5) 
{ 
print ("This is an example of a while loop.<br/>"); 
ob_start(); 
ob_flush(); 
flush(); 
sleep(1); 
$i++; 

} 

Ни одна из версий выводит строку, так, как я намеревающиеся, а именно, по одному за раз интервалом в одну секунду. Любая помощь приветствуется.

+0

Это до браузера, когда, чтобы сделать его ... – Ryan

+0

@dmubu Прочитать описание здесь http://www.php.net/manual/en/function.flush.php – Sampson

+0

Также читайте: HTTP: //stackoverflow.com/a/14922225/1454514 –

ответ

0

У меня всегда были проблемы с WAMP и флешем, и в итоге пришел к выводу, что он просто сломан в WAMP. Кажется, независимо от того, какие параметры сервера у меня есть, есть что-то о том, как WAMP упакован, что просто не сработает.

Единственный способ, с помощью которого вы собираетесь работать, - это использовать XAMPP или установить и настроить собственный сервер.

+0

Я был в отчаянии, пока не выключил 'output_buffering' в php.ini. Теперь все отлично работает с flush(). –

0

У меня была эта проблема, и я смог ее решить, включив следующие биты кода.

// Necessary Settings and stuff for output buffering to work right 
apache_setenv('no-gzip', 1); 
ini_set('zlib.output_compression', 0); 
ini_set('implicit_flush', 1); 
ini_set('output_buffering', "off"); 

// Start a new output buffer and send some blank data to trick browsers 
ob_start(); 
echo str_repeat(" ", 4096); 

for ($i=0; $i < 10; $i++) { 
    echo "<div>Echo Something...</div>\n"; 

    // Call both ob_flush and flush functions 
    ob_flush(); 
    flush(); 
} 
0

Для тех, кто не может справиться даже с обходным путем Юстина. Протестировано на лампе x64.

// Necessary Settings and stuff for output buffering to work right 
apache_setenv('no-gzip', 1); 
ini_set('zlib.output_compression', 0); 
ini_set('implicit_flush', 1); 
ini_set('output_buffering', "off"); 

// Start a new output buffer and send some blank data to trick browsers 
ob_start(); 
echo str_repeat(" ", 4096); 
ob_end_flush(); //addition 
ob_flush(); 
flush(); 

for ($i=0; $i < 10; $i++) { 
    ob_start(); //addition 
    echo "<div>Echo Something...</div>\n"; 

    ob_end_flush(); //addition 
    ob_flush(); 
    flush(); 
}