как реализовать лог в реальном времени

Тема в разделе "PHP", создана пользователем buket23, 30 ноя 2009.

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

    buket23

    Регистр.:
    3 окт 2008
    Сообщения:
    163
    Симпатии:
    10
    как при работе скрипта выводить лог в реальном времени
    допустим возьмем такой скрипт
    PHP:
    <?php

    $id 
    $_POST['use'];
    $tm $_POST['tm'];

     
       function 
    post($url,$post,$refer)
        {
           
    $ch curl_init($url);
           
    curl_setopt($chCURLOPT_USERAGENT"Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.4) Gecko/2008102920 AdCentriaIM/1.7 Firefox/3.0.4");
           
    curl_setopt($chCURLOPT_POST1);
           
    curl_setopt($chCURLOPT_HEADER1);
           
    curl_setopt($chCURLOPT_POSTFIELDS$post);
           
    curl_setopt($chCURLOPT_REFERER$refer);
           
    curl_setopt($chCURLOPT_COOKIEJAR"./cook");
           
    curl_setopt($chCURLOPT_COOKIEFILE"./cook");
           
    curl_setopt($chCURLOPT_FOLLOWLOCATION1);
           
    curl_setopt($chCURLOPT_RETURNTRANSFER1);
           
    $result  curl_exec($ch);
           return 
    $result;
        }
    $text file("login.txt");
    foreach (
    $text as $txt)

     {
    $buffer explode(":",$txt);
        
    $pass trim($buffer[1]);
        
    $email trim($buffer[0]);

    $result post('http://site.ru/login.php','act=login&success_url=&fail_url=&try_to_login=1&to=&vk=&email='.$email.'&pass='.$pass,'http://site.ru/login.php');

    echo 
    "Авторизовались с $email <br>";
    echo 
    "------------------------------------------<br>";  

    }
    ?>
    т.е. надо так заходим под одним логином пишем
    PHP:
    Авторизовались с 1@mail.ru
     
    "------------------------------------------
    далее идет цикл заходит со второго и добавляет что зашел, и так до конца цикла
    PHP:
    Авторизовались с 1@mail.ru
     
    "------------------------------------------
    Авторизовались с 2@mail.ru
     "
    ------------------------------------------
    и т.д.
     
  2. Sanuch

    Sanuch

    Регистр.:
    25 май 2009
    Сообщения:
    207
    Симпатии:
    70
    PHP:
    function logfile($message)
    {
        
    $file "./log.log";
        
    $f = @fopen($file"a+");
        if (
    $f) {
            @
    fwrite($fdate("H:i:s d-m-Y") . "  " $trim(message) . "\r\n");
            @
    fclose($f);
        }
    }
    в коде основного скрипта добавляете вызов функции
    PHP:
    logfile("Авторизовались с " $email);
     
    buket23 нравится это.
  3. buket23

    buket23

    Регистр.:
    3 окт 2008
    Сообщения:
    163
    Симпатии:
    10
    делаю так и отказывается работать, при этом еще и цикл останавливается после первого захода
    PHP:
      <?php

    $id 
    $_POST['use'];
    $tm $_POST['tm'];

     function 
    logfile($message)
    {
        
    $file "./log.log";
        
    $f = @fopen($file"a+");
        if (
    $f) {
            @
    fwrite($fdate("H:i:s d-m-Y") . "  " $trim(message) . "\r\n");
            @
    fclose($f);
        }
    }  
       function 
    post($url,$post,$refer)
        {
           
    $ch curl_init($url);
           
    curl_setopt($chCURLOPT_USERAGENT"Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.4) Gecko/2008102920 AdCentriaIM/1.7 Firefox/3.0.4");
           
    curl_setopt($chCURLOPT_POST1);
           
    curl_setopt($chCURLOPT_HEADER1);
           
    curl_setopt($chCURLOPT_POSTFIELDS$post);
           
    curl_setopt($chCURLOPT_REFERER$refer);
           
    curl_setopt($chCURLOPT_COOKIEJAR"./cook");
           
    curl_setopt($chCURLOPT_COOKIEFILE"./cook");
           
    curl_setopt($chCURLOPT_FOLLOWLOCATION1);
           
    curl_setopt($chCURLOPT_RETURNTRANSFER1);
           
    $result  curl_exec($ch);
           return 
    $result;
        }
    $text file("login.txt");
    foreach (
    $text as $txt)

     {
    $buffer explode(":",$txt);
        
    $pass trim($buffer[1]);
        
    $email trim($buffer[0]);

    $result post('http://site.ru/login.php','act=login&success_url=&fail_url=&try_to_login=1&to=&vk=&email='.$email.'&pass='.$pass,'http://site.ru/login.php');

    logfile("Авторизовались с " $email);  
    }
    ?> 
     
  4. ZCFD

    ZCFD

    Регистр.:
    16 янв 2008
    Сообщения:
    989
    Симпатии:
    437
    бррр
    недавно тема поднималась

    возьми первоначальный код
    просто после каждого echo ...
    вызывай flush()

    т.е.
    Код:
     
    echo "Авторизовались с $email <br>";flush();
    
    Sanuch просто написал тебе код записи в файл )))
     
    buket23 нравится это.
  5. Sanuch

    Sanuch

    Регистр.:
    25 май 2009
    Сообщения:
    207
    Симпатии:
    70
    у меня опечатка, в функции logfile
    строка записи в файл должна быть следующей:
    PHP:
    @fwrite($fdate("H:i:s d-m-Y") . "  " trim($message) . "\r\n");
    не там знак доллара поставил :)
     
  6. buket23

    buket23

    Регистр.:
    3 окт 2008
    Сообщения:
    163
    Симпатии:
    10
    спасибо и сам не глянул и не увидел ошибки, но всеравно не выводит, цикл идет а лога нет:confused:

    бррр
    недавно тема поднималась

    возьми первоначальный код
    просто после каждого echo ...
    вызывай flush()

    т.е.
    Код:

    echo "Авторизовались с $email <br>";flush();

    Sanuch просто написал тебе код записи в файл )))

    странно но лог выводится только по окончанию цикла, я уже так пробовал, не могу понять в чем причина
     
  7. ZCFD

    ZCFD

    Регистр.:
    16 янв 2008
    Сообщения:
    989
    Симпатии:
    437
    PHP:
    function logfile($message)
    {
        
    $file "./log.log";
        
    $f = @fopen($file"a+");
        if (
    $f) {
            @
    fwrite($fdate("H:i:s d-m-Y") . "  " trim($message) . "\r\n");
            @
    fclose($f);
        }

    пишет лог в файл, а не выводит в браузер

    смотри выше

    Добавлено через 24 минуты
    некоторые браузеры не корректно работают с кэшем выдачи ( у меня такие траблы с IE ), т.е. не выдают пользователю пока буффер не заполнится до определенной величины
    В таких случаях советуют еще иногда выводить незначащие символы ( например 500 пробелов ) - тебе не видно, а буфер переполняется

    Ну и проверь свой код в другом браузере - Opera например
     
Статус темы:
Закрыта.