как я могу получить вывод браузера php в реальном времени

Всем ответам на подобные вопросы, которые я нашел здесь, уже много лет, и они мне не помогают. Я пробовал всевозможные предложения, которые я нашел в Интернете и в руководстве по php, но все они дают один и тот же результат: в браузере нет вывода, пока скрипт php не завершит выполнение. Это самый последний код, который я пробовал:

<?php
// Turn off output buffering
ini_set('output_buffering', 'off');
// Turn off PHP output compression
ini_set('zlib.output_compression', false);

//Flush (send) the output buffer and turn off output buffering
//ob_end_flush();
while (ob_end_flush());

// Implicitly flush the buffer(s)
ini_set('implicit_flush', true);
ob_implicit_flush(true);

//prevent apache from buffering it for deflate/gzip
header("Content-type: text/plain");
header('Cache-Control: no-cache'); // recommended to prevent caching of event data.

for($i = 0; $i < 1000; $i++)
{
echo ' ';
}

ob_flush();
flush();

/// Now start the program output

echo "Program Output";

ob_flush();
flush();
for( $i = 0 ; $i < 10 ; $i++ )
{
    echo $i . '\n<br>';
    ob_flush();
    flush();
    sleep(1);
}
echo 'End ...<br>';
?>

Как я могу получить вывод в реальном времени в браузере? Заранее спасибо!


person Mark Highton Ridley    schedule 16.03.2020    source источник


Ответы (1)


Вам нужно посмотреть либо на внешний опрос конечной точки, либо на настройку потоковой передачи через что-то вроде веб-сокетов. Простое объяснение заключается в том, что браузеры ждут ответа от вашего веб-сервера, который не завершается до тех пор, пока скрипт php не будет завершен.

person Mark Brown    schedule 16.03.2020