Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > статус выполнения скрипта


Автор: ScreaM [13r] 29.4.2005, 15:53
Нужно сделать, как в винраре статус выполнения скрипта.
т.е. допустим в цикле идет показ фалов данной директории, нужно выводить не сразу текст, а по строчно.
как в изображении прикреплённом.
как сделать?

Автор: Joes 29.4.2005, 16:16
сделать-то можно, но хочу предупредить, что это будет очень тупо, если это делать на ПХП, т.к. перед каждым показом нужно перегружать стрницу... Где вообще такие мысли рождаются??? smile

Автор: skalex 29.4.2005, 17:01
ИМХО полный бред ...

Автор: Irokez 29.4.2005, 21:23
Цитата(Joes @ 29.4.2005, 16:16)
сделать-то можно, но хочу предупредить, что это будет очень тупо, если это делать на ПХП, т.к. перед каждым показом нужно перегружать стрницу... Где вообще такие мысли рождаются???

чепуха smile
flush() - отправляет браузеру выводимую информацию, т.е если делать в цикле
Код

while (....) {
...
echo 'Извлечение ...';
flush();
}

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

Автор: Mal Hack 29.4.2005, 22:05
Irokez
При условии, что надо показать полность таблицу, а потом В НЕЙ показывать статус одним PHP тут не обойдешься...
Да, все что изменяется - в слой, а он - через JavaScript обновляется, получая инфу из невидомого ифрейма или еще каким-ть методом.

Автор: Irokez 29.4.2005, 22:09
Mal Hack
тогда уж лучше в таблицу засунуть фрейм, а во фрейме выполнять скрипт ..

Автор: Mal Hack 29.4.2005, 22:16
Вот прикладываю дампер базы.
В нем как раз такая фича.
Один минус, работает только Под ИЕ.
Под другие браузеры через ифреймы по любому.

Автор: Joes 30.4.2005, 14:01
Цитата
чепуха
flush() - отправляет браузеру выводимую информацию, т.е если делать в цикле

точно, совсем забыл... вернее и не помнил smile Но все равно бред smile

Автор: Mal Hack 30.4.2005, 16:57
Цитата(Joes @ 30.4.2005, 15:01)
Но все равно бред smile

В данном случае этого просто не сделать, разве что через iframe.

Автор: simanyay 1.5.2005, 11:27
А может лучше сделать через http://webmascon.com/topics/technologies/13a.asp? Правда тогда теряем поддержку старых браузеров. Но зато результат - лучше некуда.

Автор: dm9 4.5.2005, 11:45
Я решил проверить, как работает flush.
Оказалось, самая тормозная Опера. Ей нужно скачать около 10 килобайт, чтобы отобразить кусок кода. Пришлось эти 10 кил вставить в комментарии smile)

Вот что получилось (всего придётся скачать около 100 КБ):
http://dm9.ru/vingrad/examples/php/flush.php

Исходный код такой:

Код

<?php
for ($i=0; $i<10; $i++) {
    echo "<table><tr><td>$i<!--Здесь 10000 знаков--></td></tr></table>\n";
    flush();
    sleep (1);
}
?>


Цитата(simanyay @ 1.5.2005, 12:27)
А может лучше сделать через XMLHttpRequest? Правда тогда теряем поддержку старых браузеров. Но зато результат - лучше некуда.


Хм. Опера уже тоже поддерживает. Надо будет посмотреть, что это такое smile

Автор: Aliance 4.5.2005, 13:23
Цитата(simanyay @ 1.5.2005, 12:27)
А может лучше сделать через XMLHttpRequest? Правда тогда теряем поддержку старых браузеров. Но зато результат - лучше некуда.

ДА, только через это и накак иначе. Довольно легко. Айда в форум по JS...

PS:
а почему как на винграде??? Где тут такая вещь?

Автор: dm9 4.5.2005, 13:27
Aliance, наверное, имеется в виду отображение таблиц с постами по мере загрузки. Тут специально для этого каждый пост - отдельная таблица...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)