Полоса загрузки

Тема в разделе "Как сделать...", создана пользователем DowJones, 15 апр 2012.

  1. DowJones

    DowJones Писатель

    Регистр.:
    11 апр 2012
    Сообщения:
    1
    Симпатии:
    0
    Есть скрипт, выполняющий 9*499 однотипных операций
    Выполняется долго. И хотелось бы что бы он выводил по ходу программы, что уже выполненно. От сюда вопрос: возможно ли реализовать, вывод на экран, по ходу выполнения программы?
    сам скрипт:

    PHP:
    <?php
    set_time_limit
    (10*60); //время на выполнение цикла
    error_reporting(0);
    ob_start();
    //Получаем свежее печенье (cookie)
    $login 'dowjones';
    $pass 'ne_skagu';
    $url 'http://сайт.домен/login.php';
    $ch curl_init();
    curl_setopt($chCURLOPT_URL$url);
    curl_setopt($chCURLOPT_RETURNTRANSFER1);
    curl_setopt($chCURLOPT_POST1);
    curl_setopt($chCURLOPT_POSTFIELDS'username=$login&password=$pass&submit=%C2%EE%E9%F2%E8');
    curl_setopt($chCURLOPT_COOKIEJAR'Z:\home\test1.ru\www\cookie.txt');
    curl_setopt($chCURLOPT_COOKIEFILE'Z:\home\test1.ru\www\cookie.txt');
    //Куки получили, теперь можно перейти к поиску
    for($i=1;$i<=9;$i++)
    {
      for(
    $j=1;$j<=499;$j++)
      {
            
    $url="http://сайт.домен/страница.php?параметр1=2&параметр2=$i&параметр3=$j"//матрица из страниц 9х499
            
    $ch curl_init();
            
    curl_setopt($chCURLOPT_URL,$url);
            
    curl_setopt($chCURLOPT_RETURNTRANSFER1);
            
    curl_setopt($chCURLOPT_COOKIEJAR'Z:\home\test1.ru\www\cookie.txt');
            
    curl_setopt($chCURLOPT_COOKIEFILE'Z:\home\test1.ru\www\cookie.txt');
            
    $text curl_exec($ch);
            
    curl_close($ch);
            if (
    preg_match("/ТО_ЧТО_ИЩЕМ/i""$text")) {
                echo 
    "Вхождение найдено. =>  <a target=\"_blank\" href=\"$url\">Смотреть</a><br>";
            }
        }
    }
    ?>
     
  2. Inviseble_Demon

    Inviseble_Demon

    Регистр.:
    11 дек 2008
    Сообщения:
    482
    Симпатии:
    350
    :D Долго не думали появился вопрос с продолжением скрипта и гоу на форум....
    Ну вы народ и чудите...

    Даю вектор. Крутотяшный и ненужный вам в данный момент ибо могк взорвете.
    1) Ajax (делаем прогрес бар и обновляем его из файла а вот сам % уже переписывает скрипт с цыклами) - ну как то так. Это грубое описание.

    Теперь то что вам проще будит.
    1) Создаем функцию.
    PHP:
    // Функция не оптимизирована но вам оно пока и не критично.
    function _echo($txt)
    {
        
    $date=date('d.m.Y_H');
    echo 
    $txt "<br>\n";
     
    $file=fopen('./logs/'.$date.'_.html''a+');
    fwrite ($filedate('h:i:s').' '.$txt."<br>\n");
    fclose ($file);
     
        @
    ob_flush();
        @
    flush();
    }
     
    Далее в коде в нужном месте делаем логирование. К примеру:

    PHP:
    ............
            
    curl_setopt($chCURLOPT_COOKIEFILE'Z:\home\test1.ru\www\cookie.txt');
            
    $text curl_exec($ch);
            
    curl_close($ch);
         
            
    _echo ('Получены данные с <a href="'.$url.'" target=_blank>'.substr($url050).'</a> ('.($i*$j).' / '.(9*499).')');
         
            if (
    preg_match("/ТО_ЧТО_ИЩЕМ/i""$text")) {
    ...............
    Реализация не ахти но суть ясна.

    ......
    Сижу думаю... Вам даже с этим рано работать... Если писать ф лог файл то нужно и кнопку стапорения делать и ignore_user_abort(1); потому как расчет на то что страница будит закрыта после запуска.

    Кароче это опять вам просто для убивания всего порядка в голове так что забываем все что я писал ранее! Потом обратитесь к этому тексту через пару месяцов...

    Делаете в нужном месте простой

    echo 'Итерация #'.($i*$j).'<br>';
    flush();

    Все. После запуска увидите результат. Как только исполнение дойдет до flush(); сервер выплюнит буфер. Так что текст выведется сразу.
     
    DowJones нравится это.
  3. Inviseble_Demon

    Inviseble_Demon

    Регистр.:
    11 дек 2008
    Сообщения:
    482
    Симпатии:
    350
    Да и по поводу прошлой темы.
    Вы плохо читаете мануалы :(
    То что вы хотели изначально нужно было через CURLOPT_COOKIE а сам крекер получается ключ=значение&ключ=значение.
    Так что плохо, плохо.
     
  4. DowJones

    DowJones Писатель

    Регистр.:
    11 апр 2012
    Сообщения:
    1
    Симпатии:
    0
    Видел этот способ, но к сожалению, подробных мануалов не так много.
    от сюда и непонятки, что есть ключ и что есть значение.
    В итоге нашел один подробный мануал, для чайников.
    Там предложен именно тот способ который у меня реализован

    И должен признать, с задачей он справляется даже лучше, чем я хотел.
    Ибо когда cookie устаревает, скрипт продолжает работать, так как он получает куку при авторизации.
    что по сути делает программу универсальной.

    Через ajax оно наверное и лучше будет, но багаж знаний не позволяет.
    видел мануалы, ничего не понятно =(
     
  5. Inviseble_Demon

    Inviseble_Demon

    Регистр.:
    11 дек 2008
    Сообщения:
    482
    Симпатии:
    350
    Вы читаете между строк!
    https://www.nulled.cc/threads/226666/#post-1929293

    Это пост о котором шла речь.
    Ваш код без функции выглядел бы так

    PHP:
    set_time_limit(10*60); //время на выполнение цикла
    error_reporting(0);
    ob_start();
     
    $login 'dowjones';
    $pass 'ne_skagu';
    $url 'http://сайт.домен/login.php';
     
    // Авторизация.
    $page=GO($url, array(
    'username'    => $login,
    'password'    => $pass,
    'submit'    => '%C2%EE%E9%F2%E8'
    ));
     
    // Парсер
    for($i=1;$i<=9;$i++)
    {
    for(
    $j=1;$j<=499;$j++)
    {
    $text GO("http://сайт.домен/страница.php?параметр1=2&параметр2=$i&параметр3=$j");
    if (
    preg_match("/ТО_ЧТО_ИЩЕМ/i""$text"))
    {
    echo 
    "Вхождение найдено. =>  <a target=\"_blank\" href=\"$url\">Смотреть</a><br>";
    }
    }
    }
    Разве это не кашерно !?
    А все что нужно было это покопаться на форуме и найти пример и переписать его под себя - там все понятно. Если непонятно перечитывайте пока не поймете. Иначе вы в итоге так и будите по всем вопросам сливаться на форумы ((
    А когда встанит действительно задача вам уже не будут так помогать ибо это уже пахнет деньгой ))
     
    DowJones нравится это.
  6. DowJones

    DowJones Писатель

    Регистр.:
    11 апр 2012
    Сообщения:
    1
    Симпатии:
    0
    Да-да, я читал про авторизацию на юкозе.
    Этот топик я нашел по поисковой фразе "curl"
    Кошерно-то, оно может и кошерно.
    Но тогда я первый раз в глаза curl увидел.
    Нет я про него что-то слышал, но не более.
    Плюс мне функция показалась нагроможденной, в ней много лишнего, для меня.
    А перед тем как на форум слиться) я читал мануалы)) много))
    Но там все написано так что это как-то сложно применить к частному случаю.
    Не все там подробно разобрано.
     
  7. neodev

    neodev Создатель

    Регистр.:
    26 мар 2012
    Сообщения:
    24
    Симпатии:
    4
    Если фронтендом стоит Nginx - он будет ждать закрытия соединения с apache и/или будет gzip-ить контент...
    Это тоже стоит учитывать...