Php Curl: по тайм-ауту, закрыть соединение, но не вернуть никакого контента - PullRequest
2 голосов
/ 06 июня 2019

Когда я запускаю curl на сервере и также устанавливаю тайм-аут, сервер не может передать весь контент, установленный заголовком «Content-Length».проблема в том, что соединение прерывается из-за тайм-аута, и выход не остается.Есть ли в опциях оператор, позволяющий передавать контент на выход, даже если время соединения истекло?

<?php
$curl = curl_init();
curl_setopt_array($curl, array(
    CURLOPT_RETURNTRANSFER => 1,
    CURLOPT_VERBOSE => true,
    CURLOPT_URL => $url,
    CURLOPT_TIMEOUT =>1800,
));
$data= curl_exec($curl);
curl_close($curl);

echo $data;
?>

* About to connect() to 2.100.x.x port 80 (#0)
*   Trying 2.100.x.x... * connected
* Connected to 2.100.x.x (2.100.x.x) port 80 (#0)
> GET /example.html HTTP/1.1
Host: 2.100.x.x
Accept: */*

< HTTP/1.1 200 OK
< Date: Wed, 05 Jun 2019 21:00:36 GMT
< Content-Type: text/html
< Content-Length: 16781312
< Cache-Control: private
< Connection: close
<
* Operation timed out after 1800000 milliseconds with 4598060 out of 16781312 bytes received
* Closing connection #0

1 Ответ

0 голосов
/ 06 июня 2019

контент это двоичная передача .. но это как потоковый контент.например, без CURLOPT_TIMEOUT curl будет бесконечным, и соединение не прекратится, но проблема в том, что если тайм-аут активируется, соединение прекращается, но не пересылает полученный вывод.Если я использовал file_get_contents, по тайм-ауту у меня есть вывод с или без настройки тайм-аута.зачем использовать curl вместо file_get_contents?потому что мне нужно настроить curl с несколькими curl.с file_get_contents я не могу сделать мульти звонок без ожидания.

...