Отображение результатов работы php в реальном времени

Статус
В этой теме нельзя размещать новые ответы.

Extalionez

Клоун
Заблокирован
Регистрация
21 Авг 2008
Сообщения
368
Реакции
191
  • Автор темы
  • Заблокирован
  • #1
Как бы попроще...
Есть скрипт, который должен сделать свыше 1000 циклов for(){}
Хотелось бы чтобы пока он их делает, в браузере динамично отображалось что-то вроде этого:
Цикл: 23(номер цикла,выполняющегося в данный момент)
Количество:79(значение какой-нить переменной в цикле 23)

Необязательно показывать каждый цикл, но желательно.
P.S.: Я в общем понимаю что это довольно сложно, но ваше решение я думаю будет многим полезно.
P.P.S.: Идеально это реализовано Для просмотра ссылки Войди или Зарегистрируйся, но я не смог в этом разобраться(
 
Как то так:
PHP:
echo '<pre>';
    ob_start();
    echo var_dump($var);
    $c = ob_get_contents();
    ob_end_clean();
    echo htmlspecialchars($c);
    echo '</pre>';
    flush();
 
  • Автор темы
  • Заблокирован
  • #4
Похоже что единственное что мне, ламеру, в этом поможет только ajax.
Никто не подскажет как сделать это максимально просто? Спасибо!
 
проще flush уже некуда
PHP:
<?
header('Content-Type: text/plain; charset=utf-8');

set_time_limit(0);

for($i=0;$i<1000;$i++){
    echo "\nцикл: $i количество: ".round($i/10)."%";
    flush();
    //пауза для наглядности
    usleep(100000);
}
 
тема поднималась.
Для просмотра ссылки Войди или Зарегистрируйся
там есть и ссылка на подробный пример. Скажу только что не на всех серверах может работать
 
  • Автор темы
  • Заблокирован
  • #8
Народ, уже сутки ищу как это сделать и так и не нашёл или не понял. :confused:
В общем попробую ещё раз поподробнее объяснить о чём я уже мечтаю.
Есть что-то вроде этого:
PHP:
<?php
for($id = 1; $id<=1000; $id++){
/**
* Доооолгий код
*/
echo $id_number;
}
Нужно чтобы в браузере отображался прогресс бар, и где-нить под ним выводилось текущее значение переменной $id_number, ну и ещё нескольких переменных если они будут меняться или вообще создаваться.
Желательно конечно чтобы после каждого цикла, но можно и с определённой периодичностью.
Если можно, то напишите хотя бы базово как это должно выглядеть. Ещё раз спасибо.
P.S.: flush у меня не работает:(
 
Вывод информации в рел.тайм обычно используется для лога, т.е. всегда есть информация(текст), который можно и нужно записать в файл лога. Если проблемы с написанием скрипта на js зачем его использовать? Религия не позволяет использовать фрейм, который будет обновляться по интервалу? Единственное что нужно будет добавить это автоматическую прокрутку на js. При больших объёмах лога flush вообще не вариант, т.к. существует ограничение на объем информации которую может вывести php, и как следствие приходится выводить доп. информацию (пробелы), чтобы "добить" минимальный объём для вывода, и как результат после нескольких часов работы программы браузер просто нервно и бешено свопается. Собственно решение фрейм, с автоматическим обновлением, который содержит js для прокрутки страницы, или ограничение на количество строк которые помещаются в фрей (без прокрутки).
 
Блин так долго отвечал! Вот направление тебе!

HTML:
<!DOCTYPE html>
<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">
    <head>
        <title></title>
        <meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">
 
        <script type='text/javascript' src='../js/jquery.min.js'></script>
        <script type='text/javascript'>
        $(document).ready(function() {
            $('#idecho').load('temp.txt');
        });   
        </script>
    </head>
<body>
<div id="idecho"></div>
</body>
</html>
Это индексный файл

PHP:
<?php
$tempfile = "temp.txt";
for($id = 1; $id<=1000; $id++){
 
while ($y<100000)
    {
        $a=$a+$y;
        $y++;
        $str = "$a:$y<br />";
 
        if($f = @fopen($tempfile, 'a+')){
 
            @fwrite($f, $str);
            @fclose($f);
        }
    }
 
    $y=0;
    if($f = @fopen($tempfile, 'a+')){
 
                @fwrite($f, $id." - цикл <br />");
                @fclose($f);
    }
 
 
}
?>
Вот тут все падает в 1 файл и загрузка происходит 1 раз! СТавишь для html setInterval на функцию загрузки текстового файла!
Которую надо дописать! НУ и все! В php файле все пишешь в текстовый файл! Но грузиться будет долго! Поэтому предлагаю каждый цикл копировать файл! и основной очиать! То есть в браузер будет улетать временная инфа! в при надобности сможешь посмотреть всю!
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху