Просмотр полной версии : fsockopen, несколько запросов
Можно ли открыть одно соединение через прокси с помощью fsockopen() и посылать несколько запросов друг за другом? Я щас открываю для каждого запроса новое соединение и соответственно трачу на это время, попробывал через одно - не получилось, отправился только один запрос.
inlanger
09.12.2008, 17:00
Нужно только каждый раз новый запрос формировать
есть ещё неблокирующие сокеты .. не разу не использовал, тк кк мульти курл всегда проще ..
Вот отрывок кода. Отправляется только один запрос из цикла fоr.
Что я делаю не так? Или киньте отрывок кода, как это проще сделать, может при помощи курла
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
inlanger
09.12.2008, 17:18
тебе надо каждый раз ПОЛНОСТЬЮ заново отправлять запрос. А ты в одном запросе хочешь передать сразу несколько. Все твои внутренние форы не катят. Нужно полностью переделать алгоритм.
Вот тут посмотри http://forum.antichat.ru/showpost.php?p=972325&postcount=18 приводил пример
Переделал скрипт, но теперь получаю вот такую ошибку:
Warning: socket_write(): unable to write to socket [32]: Broken pipe in skript.php on line 293
Почему выдается эта ошибка, как исправить?
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
.:EnoT:.
10.12.2008, 21:14
Неплохой пример использования мультикурла:
http://www.phpied.com/simultaneuos-http-requests-in-php-with-curl/
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot