За последние 24 часа нас посетили 17313 программистов и 1196 роботов. Сейчас ищут 1443 программиста ...

Срочно. Нужен PHP скрипт-парсер.

Тема в разделе "PHP Free-Lance", создана пользователем Rostislav, 26 ноя 2010.

  1. Rostislav

    Rostislav Активный пользователь

    С нами с:
    26 ноя 2010
    Сообщения:
    3
    Симпатии:
    0
    Здравствуйте уважаемые прогеры.
    Нужен скрипт парсер.
    ТЗ:


    1. Обращаемся к URL вида www.test.ru/test/test.php=XXX
    Где XXX это число, переменная от 1 до 999 допустим. Необходимо что бы значения максимума и минимума я мог вводить из WEB-интерфейса.

    2. Дальше смотрим как отвечает удалённый скрипт. Если выводится информация отличная от "STOP", то XXX записываем в файл и продолжаем цикл.

    На выходе должен быть txt файл, содержащий XXX, каждый с новой строчки (либо через ; )


    Код должен быть максимально оптимизирован, проверять придётся много, порядка 10 миллионов.


    Бюджет: 20$
    Срок: работающий скрипт нужен до 18.00 27.11.2010 (суббота).


    Если заинтересовало: велком 456-075-554
     
  2. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Отписался.
     
  3. neverlose

    neverlose Активный пользователь

    С нами с:
    27 авг 2008
    Сообщения:
    1.112
    Симпатии:
    20
    PHP:
    1. <form method="post" action="">
    2.   Min: <input name="min" /><br />
    3.   Max: <input name="max /><br />
    4.   <input type="submit" />
    5. </form><br />
    6. <?php
    7. if( !empty( $_POST))
    8. {
    9.     $min = (int)$_POST['min'];
    10.     $max = (int)$_POST['max'];
    11.     if( $max >= $min)
    12.     {
    13.         $url = 'http://www.test.ru/test/test.php=';
    14.         $file = 'myFile.txt';
    15.  
    16.         set_time_limit( ($max - $min) * 5);
    17.         if( !is_file( $file))
    18.         {
    19.             @touch( $file);
    20.             @chmod( $file, 0777);
    21.         }
    22.  
    23.         if( is_writable( $file))
    24.         {
    25.             for( $i = $min; $i <= $max; $i++;)
    26.             {
    27.                 $result = file_get_contents( $url .$i);
    28.                 if( $result != 'STOP')
    29.                     file_put_contents( $myFile, $i .PHP_EOL, FILE_APPEND);
    30.             }
    31.             echo 'Parsing complete';
    32.         }
    33.         else
    34.             echo 'Cannot write to file: "' .$file .'"';
    35.     }
    36.     else
    37.         echo 'Max must be greater or equal to Min';
    38. }
    39. ?>
     
  4. Апельсин

    Апельсин Активный пользователь

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    neverlose
    херово ты только что поступил.
     
  5. Psih

    Psih Активный пользователь
    Команда форума Модератор

    С нами с:
    28 дек 2006
    Сообщения:
    2.678
    Симпатии:
    6
    Адрес:
    Рига, Латвия
    Апельсин
    Не кяпитись, настолько простой скрипт вряд ли то, что им нужно. Скорее всего это вырастет раз так в 20-30 и обрастёт функционалом. Заработаешь на расширении ;)
     
  6. Апельсин

    Апельсин Активный пользователь

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    Psih
    Не, я ж не за себя, уже ж вон Яблоко отписался, а тут такое дело.
    Мелочь, а не приятно
     
  7. Rostislav

    Rostislav Активный пользователь

    С нами с:
    26 ноя 2010
    Сообщения:
    3
    Симпатии:
    0
    Спасибо всем отписавшимся.
    neverlose, Ваш вариант не работает. Ошибка:
    Parse error: syntax error, unexpected T_IF in /home/xxxx/1.php on line 7


    Исполнитель найден, всем спасибо.
     
  8. neverlose

    neverlose Активный пользователь

    С нами с:
    27 авг 2008
    Сообщения:
    1.112
    Симпатии:
    20
    Пару синтаксических ошибок ) я же скрипт не проверял. Скрипт простой, и не стоит 0.5$ за строчку. Пусть идёт на благотворительность )
    PHP:
    1.  
    2. <form method="post" action="">
    3.   Min: <input name="min" /><br />
    4.   Max: <input name="max" /><br />
    5.   <input type="submit" />
    6. </form><br />
    7. <?php
    8. if( !empty( $_POST))
    9. {
    10.     $min = (int)$_POST['min'];
    11.     $max = (int)$_POST['max'];
    12.     if( $max >= $min)
    13.     {
    14.         $url = 'http://www.test.ru/test/test.php=';
    15.         $file = 'myFile.txt';
    16.  
    17.         set_time_limit( ($max - $min) * 5);
    18.         if( !is_file( $file))
    19.         {
    20.             @touch( $file);
    21.             @chmod( $file, 0777);
    22.         }
    23.  
    24.         if( is_writable( $file))
    25.         {
    26.             for( $i = $min; $i <= $max; $i++)
    27.             {
    28.                 $result = file_get_contents( $url .$i);
    29.                 if( $result != 'STOP')
    30.                     file_put_contents( $myFile, $i .PHP_EOL, FILE_APPEND);
    31.             }
    32.             echo 'Parsing complete';
    33.         }
    34.         else
    35.             echo 'Cannot write to file: "' .$file .'"';
    36.     }
    37.     else
    38.         echo 'Max must be greater or equal to Min';
    39. }
    40. ?>
    41.  
     
  9. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    действительно, вы что-то совсем "зажрались" =)
    neverlose
    добавил бы ещё flush
    set_time_limit в ноль бы поставил
    по идее, оно не критично, тк у file_get_contents есть лимиты
    ну и connection_aborted
     
  10. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    На благотровительность оно бы как раз и пошло.
    Эх, забавные люди =))