CURL очень медленно - PullRequest
       9

CURL очень медленно

8 голосов
/ 21 декабря 2009

Кто-нибудь знает, почему cURL под php5 может быть чертовски медленным и не работать даже при тайм-ауте 45 секунд, загружая файл размером в несколько килобайт на сервер speedO'light?

Код приведен здесь в соответствии с запросом (хотя я еще больше увеличил время ожидания, чтобы скрипт не потерпел неудачу во время выполнения, и изменил значение useragent на Mozilla / 4.0 с исходного Chrome):

$ch = curl_init('http://www.somesite.com/' . $key);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_REFERER, 'http://www.somesite.com/somereferer/');
// curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/530.5 (KHTML, like Gecko) Chrome/2.0.172.39 Safari/530.5');
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0');
curl_setopt($ch, CURLOPT_TIMEOUT, 120);
curl_setopt($ch, CURLOPT_DNS_CACHE_TIMEOUT, 600);

Ответы [ 2 ]

7 голосов
/ 21 декабря 2009

хмм, может быть несколько вещей, возможно, некоторые подробные данные будут иметь ошибку какого-то вида

curl_setopt($ch, CURLINFO_HEADER_OUT, true);
curl_setopt($ch, CURLOPT_VERBOSE, true); // some output will go to stderr / error_log
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
$response = curl_exec($ch);
$errStr = curl_error($ch);
$errNum = curl_errno($ch);
$head = curl_getinfo($ch, CURLINFO_HEADER_OUT);
$ci = curl_getinfo($ch);
print_r(array($head, $errStr, $errNum, $ci));

Иногда пользовательский агент меняет реакцию сайта, может потребоваться сделать что-то вроде:

curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.001 (windows; U; NT4.0; en-US; rv:1.0) Gecko/25250101');
4 голосов
/ 21 августа 2012

Когда я устанавливаю время ожидания CONNECT, я получаю более быстрый ответ. Включая эту опцию:

curl_setopt($ch, CURLOPT_CONNECTTIMEOUT,1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...