2016-05-06 2 views
4

Вот что-то странное, я, хотя это будет выводить страницу и показать по частям, пока все не будет загружен (подобно тому, как Wordpress обновление/переустановка процесса работы):Когда PHP не выводит страницу все сразу?

<html> 
<body> 
<?php 
for($i=0; $i<100; $i++) 
{ 
    echo 'HELLO'; 
} 
sleep(10); 
echo '<p></p>'; 

for($i=0; $i<100; $i++) 
{ 
    echo 'THERE'; 
} 
sleep(10); 
echo '<p></p>'; 

for($i=0; $i<100; $i++) 
{ 
    echo 'HOW '; 
} 
sleep(10); 
echo '<p></p>'; 


for($i=0; $i<100; $i++) 
{ 
    echo 'ARE U'; 
} 
sleep(10); 
echo '<p></p>'; 

Как ни странно он ждет всю страницу , затем показывает это. Какие переменные/конфигурации влияют на это поведение?

ответ

6

Я не знаю, как вы думаете, работает php, но это только серверная сторона, и вы ожидаете частичных обновлений на стороне клиента. PHP не работает так.

Когда вы вызываете этот php-скрипт, интерпретатор php начинает его выполнять, помещая вывод во временное местоположение, затем с помощью функции sleep, php-интерпретатор ждет до миллисекунды, а затем продолжит выполнение, объединив вывод в временном расположении , и продолжайте ... после выполнения скрипта, php отправляет весь результат клиенту.

Если вам нужны частичные обновления на странице, вам необходимо войти в мир асинхронных вызовов и ajax.

5

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

Подробнее: What is output buffering?

1

РНР на стороне сервера. Вы пробовали это с функцией javascript setTimeout()?

Вот пример строки, повторяющейся 10 раз после 5 секундной задержки.

<script> 
setTimeout(test, 5000); 

function test(){ 
    for (var i=0;i<10;i++){ 
    document.write("test <br />"); 
    } 
} 
</script> 
+0

Это не связано с проблемой, которую я пытаюсь решить относительно того, почему вся страница печатается сразу. – NoBugs

+0

php является серверным, что означает, что он сразу же отправляется на сервер, обрабатывается и затем возвращает результат. Выполнение чего-то динамичного, подобного этому, было бы возможно javascript. – Felix

+0

Со счетом более 3000 я думаю, что OP понимает, что такое PHP. Они просто изучают причуды, составляющие 90% этого языка. – Anonymous

Смежные вопросы