Можно ли открыть одно соединение через прокси с помощью fsockopen() и посылать несколько запросов друг за другом? Я щас открываю для каждого запроса новое соединение и соответственно трачу на это время, попробывал через одно - не получилось, отправился только один запрос.
Вот отрывок кода. Отправляется только один запрос из цикла fоr. Что я делаю не так? Или киньте отрывок кода, как это проще сделать, может при помощи курла PHP: while(!$fp){ $pr=$proxy[rand(0,count($proxy))]; list($ip, $port) = explode(":",trim($pr)); $fp = fsockopen ($ip, $port, $errno, $errstr, 30); if(!$fp) echo "$errstr ($errno)<br>\n"; }; for(условие){ //устанавливаются значения переменных переменные $otv=""; $q1 = "GET ".$ss." HTTP/1.0\r\nHost: ".$host."\r\nUser-Agent: ".$br."\r\n\r\n"; if (!$fp) { echo "$errstr ($errno)<br>\n"; } else { fputs ($fp, $q1); while (!feof($fp)) { $otv=$otv.fgets ($fp,1280000); }; }; echo $otv; };//end for
тебе надо каждый раз ПОЛНОСТЬЮ заново отправлять запрос. А ты в одном запросе хочешь передать сразу несколько. Все твои внутренние форы не катят. Нужно полностью переделать алгоритм.
Переделал скрипт, но теперь получаю вот такую ошибку: Warning: socket_write(): unable to write to socket [32]: Broken pipe in skript.php on line 293 Почему выдается эта ошибка, как исправить? PHP: while(!$fp){ $pr=$proxy[rand(0,count($proxy))]; list($ip, $port) = explode(":",trim($pr)); $socket = socket_create ( AF_INET, SOCK_STREAM, SOL_TCP ) ; $fp=socket_connect ( $socket, $ip, $port ) ; }; for(условие){ //здесь устанавливаются переменные $q1 = "GET ".$ss." HTTP/1.0\r\nHost: ".$host."\r\nUser-Agent: ".$br."\r\n\r\n"; $tmp_soket = socket_read ( $socket, 512 ) ; echo $tmp_soket; socket_write ( $socket, $q1 ) ; $tmp_soket = socket_read ( $socket, 512 ) ; echo $tmp_soket; };//end for
Неплохой пример использования мультикурла: http://www.phpied.com/simultaneuos-http-requests-in-php-with-curl/