PDA

Просмотр полной версии : fsockopen, несколько запросов


kik8888
09.12.2008, 16:50
Можно ли открыть одно соединение через прокси с помощью fsockopen() и посылать несколько запросов друг за другом? Я щас открываю для каждого запроса новое соединение и соответственно трачу на это время, попробывал через одно - не получилось, отправился только один запрос.

inlanger
09.12.2008, 17:00
Нужно только каждый раз новый запрос формировать

159932
09.12.2008, 17:10
есть ещё неблокирующие сокеты .. не разу не использовал, тк кк мульти курл всегда проще ..

kik8888
09.12.2008, 17:13
Вот отрывок кода. Отправляется только один запрос из цикла 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
тебе надо каждый раз ПОЛНОСТЬЮ заново отправлять запрос. А ты в одном запросе хочешь передать сразу несколько. Все твои внутренние форы не катят. Нужно полностью переделать алгоритм.

DIAgen
09.12.2008, 17:23
Вот тут посмотри http://forum.antichat.ru/showpost.php?p=972325&postcount=18 приводил пример

GuD-ok
09.12.2008, 17:32
Юзай curl. Куда проще.

kik8888
09.12.2008, 20:31
Переделал скрипт, но теперь получаю вот такую ошибку:
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

Isis
09.12.2008, 20:55
php.net/multicurl

.:EnoT:.
10.12.2008, 21:14
Неплохой пример использования мультикурла:
http://www.phpied.com/simultaneuos-http-requests-in-php-with-curl/