curl_exec: как отменить длительный HTTP-запрос? - PullRequest
0 голосов
/ 14 октября 2011

Я использую PHP curl_exec (), чтобы сделать запрос к API, который имеет очень длительный процесс.Но на самом деле мне не нужно знать результат, мне нужно только запустить процесс.

Для меня не имеет значения, успешен процесс или нет.Поэтому я хочу разорвать соединение, как только сделаю запрос.

Как мне разорвать соединение curl_exec?Я не хочу ждать ответа от 30 до 60 секунд:

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, "http://example.com/LongRunningProcess/parameter");        
curl_exec($ch); 
// need to do something here to just drop the connection, don't wait for curl_exec
// but what is that something?
curl_close($ch);

Я полагаю, что решение, вероятно, будет включать curl_multi?

Ответы [ 2 ]

2 голосов
/ 14 октября 2011

В зависимости от того, как настроен удаленный сервер, вполне вероятно, что процесс завершится, как только вы отключитесь.Если вы не разветвляетесь или если удаленный сервер не настроен на его разрешение, вам придется ждать его завершения.

Если у вас есть контроль над этим удаленным сервером, вы можете настроить PHP так, чтобы он продолжал работать.Вы ищете ignore_user_abort в PHP.ini или как функцию .

2 голосов
/ 14 октября 2011

Вы можете использовать CURLOPT_TIMEOUT. Из руководства :

Максимальное количество секунд, в течение которых могут выполняться функции cURL.

curl_setopt($ch, CURLOPT_TIMEOUT, 10);
...