2016-05-03 2 views
-3

Я пишу скрипт PHP, но застреваю в функции flush(). Это мой сценарий:Почему flush() не выполняет данные сразу? php

<?php 
    echo "1"; 
    flush(); 
    sleep(5); 
    echo "2"; 
?> 

Я хочу, чтобы мой скрипт для отправки «1», затем подождите 5 секунд, а затем отправить «2». Но вместо этого сценарий ждет 5 секунд, а затем отправляет «12». Я ищу ответ за последние несколько часов, но я не могу найти тот, который работает для меня.

+0

, что вы на самом деле пытаетесь сделать? похоже, что вам нужен более клиентский код. Поскольку это стоит, это не лучше всего использовать при использовании подхода на стороне сервера –

+1

Я полагаю, вы никогда не искали на странице руководства PHP для флеша раньше – Chay22

ответ

0

Вам необходимо использовать также ob_flush(), если вы используете его с каким-то веб-сервером. И ob_flush должен всегда прибывать до flush().

Так что ваш код будет:

<?php 
    echo "1"; 
    ob_flush(); 
    flush(); 
    sleep(5); 
    echo "2"; 
?> 
5

Во-первых

заподлицо() не может быть в состоянии перекрыть схему буферизации вашего веба-сервер, и это не имеет никакого эффекта на любой сторону клиента буферизации в браузере.

Во-вторых

Он также не влияет на механизм буферизации вывода в пользовательском пространстве РНР. Это означает, что вам придется вызывать оба ob_flush() и flush(), чтобы очистить выходные выходные буферы, если вы их используете.

http://php.net/manual/en/function.flush.php

По крайней мере, попробовать вызвать ob_flush(), а также.