[英]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
}
重要筆記
CURLOPT_RETURNTRANSFER
的值,因為這會干擾寫回調。 不確定這是否有幫助,但是通過命令行我想你可以使用'--max-time'選項 - “允許整個操作采用的最長時間(以秒為單位)”。
我不得不做一些快速而又臟的事情,並且不想重新編寫代碼或等待響應,因此在curl手冊中找到了--max-time選項
curl --max-time 1 URL
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.