Запрос всегда * занимает по крайней мере 1 секунду, когда время ожидания> 2 - PullRequest
1 голос
/ 03 января 2012

Хорошо, это действительно странно. Когда я делаю запрос к моему локальному хосту (который занимает около 1-2 мс), это занимает гораздо больше времени. Кажется, это зависит от времени ожидания (самое низкое из ConnectionTimeout / normaltimeout).

Все запросы выполнены

  • Когда Timeout_Ms = 5, время возврата локона составляет около 1 мс.
  • Когда Timeout_Ms = 50, время возврата локона составляет около 4 мс.
  • Когда Timeout_Ms = 500, время возврата локона составляет около 250 мс.
  • Когда Timeout_Ms = 1000, время возврата локона составляет около 500 мс.
  • Когда Timeout_Ms = 1500, время возврата локона составляет около 750 мс.
  • Когда Timeout_Ms> 2000, время возврата керла составляет около 1000 мс.

Таким образом, при установке высокого таймаута запрос всегда занимает 1 секунду. При использовании curl_multi ко времени добавляется также 1 секунда, но не имеет значения, сколько запросов я делаю.

У меня есть 2 запроса:

  • Один занимает 5 секунд -> закончен через 6 секунд
  • секунда занимает 10 секунд -> закончена через 11 секунд

1 Ответ

0 голосов
/ 03 января 2012

Это вероятно, потому что сервер хочет держать соединение открытым для возможного дальнейшего запроса.Установите заголовок Connection на close.См. Например http://php.net/curl.constants.php#76914

$header = array("Connection: close");
curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
...