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

cof*_*tor 9 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);
Run Code Online (Sandbox Code Playgroud)

Fin*_*arr 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
Run Code Online (Sandbox Code Playgroud)


Jon*_*Jon 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
}
Run Code Online (Sandbox Code Playgroud)

重要笔记

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