За последние 24 часа нас посетили 17987 программистов и 1612 роботов. Сейчас ищут 937 программистов ...

Цикличная передача параметров методом POST

Тема в разделе "PHP для новичков", создана пользователем Андрей_К, 3 май 2008.

  1. Андрей_К

    Андрей_К Активный пользователь

    С нами с:
    3 май 2008
    Сообщения:
    2
    Симпатии:
    0
    Здравствуйте! Помогите, пожалуйста, разобраться.
    Простым скриптом отправляю на удаленный ресурс параметр методом POST и получаю соответствующую этому параметру страницу. В ручном режиме скрипт работает без проблем. Т.е. если входной массив состоит из одного элемента, скрипт отрабатывает полностью. Подставляя вручную вместо num1 num2, затем num3 и т.д. неизменно получаю требуемый результат. А вот если увеличить количество входных элементов в массиве, чтобы передача параметров и получение соответствующих страниц происходило автоматически, то после успешного прохождения нескольких итераций скрипт запирается на fread() и дает ошибку Fatal error: Maximum execution time of 30 seconds. Количество успешных итераций постоянно меняется, но больше четырех проходов цикла не было. Пытался увеличить max_input_time - без толку. Изначально вместо fread() использовал fgets(), но результат тот же.
    Заранее спасибо за любую помощь.
    Код (Text):
    1.  
    2. // Так не работает
    3.  //$nums_mas = array("num1","num2","num3","num4","num5");
    4.  
    5.  // Так работает
    6.  $nums_mas = array("num1");
    7.  for($i=0; $i<count($nums_mas); $i++) {
    8.     $txt_str = "фиксированный набор символов";
    9.     $data_str = "фиксированный набор данных";
    10.     $outp_str = $txt_str . $nums_mas[$i] . $data_str;
    11.     $contentlength = strlen($outp_str);
    12.     $contentlength_str = "Content-Length: " . $contentlength . "\r\n";
    13.  
    14.     if($fp = fsockopen("avtoparts.com.ua", 80)) {
    15.         socket_set_blocking($fp, 1);
    16.         fputs($fp, "POST /AnyScript.aspx HTTP/1.1\r\n");
    17.         fputs($fp, "Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*\r\n");
    18.         fputs($fp, "Referer: http://test.com/AnyScript.aspx\r\n");
    19.         fputs($fp, "Accept-Language: ru\r\n");
    20.         fputs($fp, "Content-Type: application/x-www-form-urlencoded\r\n");
    21.         fputs($fp, "Accept-Encoding: gzip, deflate\r\n");
    22.         fputs($fp, "Host: test.com\r\n");
    23.         fputs($fp, $contentlength_str);
    24.         fputs($fp, "Connection: close\r\n");
    25.         fputs($fp, "Cache-Control: no-cache\r\n");
    26.         fputs($fp, "\r\n");
    27.         fputs($fp, $outp_str);
    28.  
    29.         $strbuf = fread($fp, 1024);
    30.         fclose($fp);
    31.  
    32.         $newfile = './' . $nums_mas[$i] . '.html';
    33.         $handle = fopen($newfile,"w");
    34.         fwrite($handle, $strbuf);
    35.         fclose($handle);
    36.     }
    37.  }
     
  2. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    set_time_limit(0); в начале скрипта.
     
  3. Андрей_К

    Андрей_К Активный пользователь

    С нами с:
    3 май 2008
    Сообщения:
    2
    Симпатии:
    0
    Спасибо, vs, заработало.
     
  4. lexa

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

    С нами с:
    22 июл 2007
    Сообщения:
    1.746
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    Оффтоп.
    Прочёл название темы, как "Циничная передача параметров методом POST". :)