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

Тема в разделе "PHP", создана пользователем Extalionez, 20 мар 2012.

Статус темы:
Закрыта.
Модераторы: latteo
  1. Extalionez

    Extalionez Клоун

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

    Необязательно показывать каждый цикл, но желательно.
    P.S.: Я в общем понимаю что это довольно сложно, но ваше решение я думаю будет многим полезно.
    P.P.S.: Идеально это реализовано тут, но я не смог в этом разобраться(
     
  2. DrLex

    DrLex Создатель

    Регистр.:
    15 сен 2011
    Сообщения:
    24
    Симпатии:
    5
  3. latteo

    latteo Эффективное использование PHP, MySQL

    Moderator
    Регистр.:
    28 фев 2008
    Сообщения:
    1.404
    Симпатии:
    1.185
    Как то так:
    PHP:
    echo '<pre>';
        
    ob_start();
        echo 
    var_dump($var);
        
    $c ob_get_contents();
        
    ob_end_clean();
        echo 
    htmlspecialchars($c);
        echo 
    '</pre>';
        
    flush();
     
  4. Extalionez

    Extalionez Клоун

    Заблокирован
    Регистр.:
    21 авг 2008
    Сообщения:
    368
    Симпатии:
    185
    Похоже что единственное что мне, ламеру, в этом поможет только ajax.
    Никто не подскажет как сделать это максимально просто? Спасибо!
     
  5. polyetilen

    polyetilen Заблокирован

    Регистр.:
    10 авг 2006
    Сообщения:
    814
    Симпатии:
    474
    проще 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);
    }
     
  6. latteo

    latteo Эффективное использование PHP, MySQL

    Moderator
    Регистр.:
    28 фев 2008
    Сообщения:
    1.404
    Симпатии:
    1.185
     
  7. KillDead

    KillDead

    Регистр.:
    11 авг 2006
    Сообщения:
    883
    Симпатии:
    540
    тема поднималась.
    https://www.nulled.cc/threads/225473/
    там есть и ссылка на подробный пример. Скажу только что не на всех серверах может работать
     
  8. Extalionez

    Extalionez Клоун

    Заблокирован
    Регистр.:
    21 авг 2008
    Сообщения:
    368
    Симпатии:
    185
    Народ, уже сутки ищу как это сделать и так и не нашёл или не понял. :confused:
    В общем попробую ещё раз поподробнее объяснить о чём я уже мечтаю.
    Есть что-то вроде этого:
    PHP:
    <?php
    for($id 1$id<=1000$id++){
    /**
    * Доооолгий код
    */
    echo $id_number;
    }
    Нужно чтобы в браузере отображался прогресс бар, и где-нить под ним выводилось текущее значение переменной $id_number, ну и ещё нескольких переменных если они будут меняться или вообще создаваться.
    Желательно конечно чтобы после каждого цикла, но можно и с определённой периодичностью.
    Если можно, то напишите хотя бы базово как это должно выглядеть. Ещё раз спасибо.
    P.S.: flush у меня не работает:(
     
  9. Qwest-fx

    Qwest-fx Постоялец

    Регистр.:
    3 апр 2007
    Сообщения:
    129
    Симпатии:
    39
    Вывод информации в рел.тайм обычно используется для лога, т.е. всегда есть информация(текст), который можно и нужно записать в файл лога. Если проблемы с написанием скрипта на js зачем его использовать? Религия не позволяет использовать фрейм, который будет обновляться по интервалу? Единственное что нужно будет добавить это автоматическую прокрутку на js. При больших объёмах лога flush вообще не вариант, т.к. существует ограничение на объем информации которую может вывести php, и как следствие приходится выводить доп. информацию (пробелы), чтобы "добить" минимальный объём для вывода, и как результат после нескольких часов работы программы браузер просто нервно и бешено свопается. Собственно решение фрейм, с автоматическим обновлением, который содержит js для прокрутки страницы, или ограничение на количество строк которые помещаются в фрей (без прокрутки).
     
  10. KupueIIIKo

    KupueIIIKo Создатель

    Регистр.:
    16 мар 2012
    Сообщения:
    22
    Симпатии:
    3
    Блин так долго отвечал! Вот направление тебе!

    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 файле все пишешь в текстовый файл! Но грузиться будет долго! Поэтому предлагаю каждый цикл копировать файл! и основной очиать! То есть в браузер будет улетать временная инфа! в при надобности сможешь посмотреть всю!
     
    polyetilen нравится это.
Статус темы:
Закрыта.