[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Вывод информации на экран по ходу работы программы
sayp
Можно ли на php сделать так, чтобы информация выводилась по ходу работы программы, а не после ее завершения. Например,
<?php
for ($i=1;i<=10;i++) {
echo $i;
sleep(1);
}
?>

В этой программе все выведется на экран после ее завершения. А нужно чтобы значение переменной $i выводилось во время работы цикла. Кто знает, помогите, пожалуйста



Спустя 3 минуты, 37 секунд (29.07.2011 - 20:25) sharki написал(а):
PHP не позволит так сделать, он получил запрос, и выдал ответ - всё! На JS еще возможно, но не на PHP

Спустя 24 секунды (29.07.2011 - 20:25) alex12060 написал(а):
sayp

Нет, на PHP не получится так. Это серверный язык, он не умеет делать сразу вывод.
Для этого, используй JS

Спустя 10 минут, 56 секунд (29.07.2011 - 20:36) VolDroN написал(а):
хм, а так:
for ($i=1;i<=10;i++) {
echo $i;
flush();
sleep(1);
}

Спустя 1 минута, 6 секунд (29.07.2011 - 20:37) sharki написал(а):
VolDroN
PHP должен обрабатывать код за доли секунды, а вы делаете какую то хрень мягко говоря

Спустя 18 секунд (29.07.2011 - 20:38) Winston написал(а):
VolDroN
И так тоже не пойдет smile.gif

Спустя 9 секунд (29.07.2011 - 20:38) Invis1ble написал(а):
VolDroN
вывод будет после полной отработки скрипта

Спустя 9 минут, 10 секунд (29.07.2011 - 20:47) bodja написал(а):
Яву нужно брать...за рога smile.gif

Спустя 2 минуты, 26 секунд (29.07.2011 - 20:49) VolDroN написал(а):
ууупс, ошибся smile.gif просто видел где то пример такой, не тестил.

sharki еслиб даже работало, у него и так там sleep на секунду стоит.

Спустя 21 секунда (29.07.2011 - 20:50) Invis1ble написал(а):
bodja
почему именно яву? вроде на пайтоне тоже решается, ну и не только...

Спустя 7 минут, 36 секунд (29.07.2011 - 20:57) Invis1ble написал(а):
VolDroN
чтобы заработал предложенный тобой вариант, нужен "вантуз" для пробивки буффера браузера (256 байт), ну и зависит от браузера еще, заработает ли:
for ($i = 1; $i <= 10; $i ++) {
echo str_pad($i . '<br />', 256, ' ', STR_PAD_LEFT);
flush();
sleep(1);
}

Спустя 14 минут, 41 секунда (29.07.2011 - 21:12) VolDroN написал(а):
Invis1ble эх, всё ты знаешь smile.gif спасибо

Спустя 2 минуты, 37 секунд (29.07.2011 - 21:15) Invis1ble написал(а):
VolDroN
да не за что, иногда полезно в мануал заглянуть smile.gif

Спустя 48 минут, 20 секунд (29.07.2011 - 22:03) killer8080 написал(а):
sayp
тут проблема не в php, он то как раз отдаёт контент сразу, иначе не было бы ошибок при вызове header() в середине скрипта после echo, например smile.gif
Единственное что мешает - это буферизация, а она есть как на стороне клиента, как упоминал Invis1ble, так и на стороне сервера. Причём не обязательно чтоб был запущен ob_start(), буферизация может быть запущена механизмом сессий например. Ещё на многих хостингах апач стоит в связке с nginx, а в последнем принудительно может быть включено gzip сжатие, которое так же буферизирует вывод. Так что метод вантуза может не сработать на хостинге wink.gif

Спустя 2 часа, 9 минут, 24 секунды (30.07.2011 - 00:12) twin написал(а):
И прокси еще...

Спустя 11 минут, 53 секунды (30.07.2011 - 00:24) Arni написал(а):
Цитата (killer8080 @ 29.07.2011 - 19:03)
sayp
тут проблема не в php, он то как раз отдаёт контент сразу, иначе не было бы ошибок при вызове header() в середине скрипта после echo, например smile.gif
Единственное что мешает - это буферизация, а она есть как на стороне клиента, как упоминал Invis1ble, так и на стороне сервера. Причём не обязательно чтоб был запущен ob_start(), буферизация может быть запущена механизмом сессий например. Ещё на многих хостингах апач стоит в связке с nginx, а в последнем принудительно может быть включено gzip сжатие, которое так же буферизирует вывод. Так что метод вантуза может не сработать на хостинге wink.gif

Именно так ребята. php сразу и пытается начать отдать все что там налепил. Автору темы не понимаю что нужно от этого.

Спустя 1 день, 12 часов, 25 минут, 26 секунд (31.07.2011 - 12:50) sayp написал(а):
Спасибо всем, я вроде бы как разобрался. Вот
<?php
ob_implicit_flush ();
for ($i=1;$i<=10;$i++) {
echo $i;
sleep(1);
}
?>
В мозилле скрипт работает как надо (выводит информацию по ходу работы скрипта). А в хроме почему-то не пашет, но не суть...

Спустя 1 час, 33 минуты, 45 секунд (31.07.2011 - 14:23) killer8080 написал(а):
Цитата (sayp @ 31.07.2011 - 12:50)
А в хроме почему-то не пашет, но не суть...

а суть так и ушла в песок rolleyes.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.