fsockopen кажется очень медленным

Почему это fsockopen так медленно по сравнению с тем же запросом из браузера?

php fsockopen: 0.254 сек

браузер: 0.070 сек

$time = microtime(true);

if($fp = fsockopen('ssl://domain.com', 443, $errno, $errstr, 20)){
echo "\n".(microtime(true) - $time);
$this->request = 'POST '.$path.' HTTP/1.1'.$crlf
.'Host: '.$this->host.$crlf
.'Content-Type: application/x-www-form-urlencoded'.$crlf
.'Content-Length: '.$content_length.$crlf
.'Connection: Close'.$crlf.$crlf
.$body;
fwrite($fp, $this->request);

while($line = fgets($fp)){
if($line !== false){
$this->response .= $line;
}
}

fclose($fp);
}

echo "\n".(microtime(true) - $time);
0.18865990638733
0.25424790382385

введите описание изображения здесь

2

Решение

Это может быть проблема с EOF, ваш fopen ждать до истечения времени ожидания.

Попробуйте меньшее время ожидания для более быстрого возврата, но это не элегантное решение.

Другое решение — запросить соединение вручную с помощью bucle, как в следующем примере:

while (!feof($conn)) {
print fgets($conn, 1024);
}

Источник примера:
https://stackoverflow.com/a/1319434/3518053

0

Другие решения

По вопросам рекламы [email protected]