簡體   English   中英

如何在沒有收到回復的情況下發出cUrl請求?

[英]How to make a cUrl request without receiving the response?

通常我在啟動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);

您可以通過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

我認為, 實際上沒有從遠程服務器接收整個響應的唯一方法是使用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的值,因為這會干擾寫回調。

不確定這是否有幫助,但是通過命令行我想你可以使用'--max-time'選項 - “允許整個操作采用的最長時間(以秒為單位)”。

我不得不做一些快速而又臟的事情,並且不想重新編寫代碼或等待響應,因此在curl手冊中找到了--max-time選項

curl --max-time 1 URL

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM