curl_exec:如何取消长时间运行的HTTP请求?

时间:2011-10-13 21:33:27

标签: php curl httpconnection curl-multi

我正在使用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 个答案:

答案 0 :(得分:2)

您可以使用CURLOPT_TIMEOUT。来自manual

  

允许cURL函数执行的最大秒数。

curl_setopt($ch, CURLOPT_TIMEOUT, 10);

答案 1 :(得分:2)

根据远程服务器的配置方式,可能会在断开连接后立即结束。除非您进行分叉,或者远程服务器配置为允许它,否则您将不得不等待它结束。

如果您可以控制该远程服务器,则可以配置PHP以使其继续运行。您正在寻找ignore_user_abort in PHP.inias a function