如何在没有收到回复的情况下发出cUrl请求?

时间:2011-04-03 22:18:10

标签: php curl

通常我在启动cURL时发布数据。我等待回复,解析等等......

我想简单地发布数据,而不是等待任何响应。 换句话说,我可以通过cURL将数据发送到Url,并立即关闭我的连接吗? (不等待任何回复,甚至等待网址是否存在)

这不是一件正常的事情,但无论如何我都在问。

这是我到目前为止所拥有的:

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $MyUrl);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_to_send); 
curl_exec($ch);  
curl_close($ch);

3 个答案:

答案 0 :(得分:6)

您可以通过旨在执行多个同时请求的curl_multi_*函数来执行此操作 - 只需触发一个请求,而不需要请求响应。

如果脚本退出并且curl仍在运行,不确定会发生什么影响。

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $MyUrl);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_to_send); 
$mh = curl_multi_init();
curl_multi_add_handle($mh,$ch);
$running = 'idc';
curl_multi_exec($mh,$running); // asynchronous
// don't bother with the usual cleanup

答案 1 :(得分:6)

我认为实际上没有从远程服务器接收整个响应的唯一方法是使用CURLOPT_WRITEFUNCTION。例如:

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $MyUrl);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_to_send); 
curl_setopt($ch, CURLOPT_WRITEFUNCTION, 'do_nothing');
curl_exec($ch);  
curl_close($ch);

function do_nothing($curl, $input) {
    return 0; // aborts transfer with an error
}

重要提示

  1. 请注意,这会产生警告,因为传输将被中止。
  2. 确保您没有设置CURLOPT_RETURNTRANSFER的值,因为这会干扰写回调。

答案 2 :(得分:-1)

不确定这是否有帮助,但是通过命令行我想你可以使用'--max-time'选项 - “允许整个操作采用的最长时间(以秒为单位)。”

我必须做一些快速而又脏的事情,并且不想重新编写代码或等待响应,所以在curl手册中找到了--max-time选项

curl --max-time 1 URL

相关问题