Php 当用户中止我的脚本时,cURL会话会发生什么情况?

Php 当用户中止我的脚本时,cURL会话会发生什么情况?,php,curl,Php,Curl,在我的PHP脚本中,我使用cURL调用REST API方法: $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, 'http://somehost/api/somemethod'); $result = curl_exec($curl); curl_close($curl); 我知道如果用户中止请求(例如,单击web浏览器中的停止按钮),那么我的PHP脚本将立即终止 当PHP脚本终止时,cURL会话是否也会终止(并中止请求)?如果没有,我必

在我的PHP脚本中,我使用cURL调用REST API方法:

$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'http://somehost/api/somemethod');
$result = curl_exec($curl);
curl_close($curl);
我知道如果用户中止请求(例如,单击web浏览器中的停止按钮),那么我的PHP脚本将立即终止


当PHP脚本终止时,cURL会话是否也会终止(并中止请求)?如果没有,我必须做什么来确保中止用户的请求也会中止cURL请求?

很快,是的。当用户终止PHP脚本时,脚本将与它运行的所有内容一起结束

当然,看看这个

PHP不会检测到用户已中止连接,直到 试图向客户端发送信息


不知道你到底是什么意思。curl请求不会以某种方式保持活动状态,它迟早会中止。PHP是否会在用户取消请求的毫秒内立即中止请求,或者由于内部原因使请求保持活动状态一段时间,这是一个实现细节,这通常不太重要,因为HTTP请求无论如何都应该相对较快。你到底关心什么,为什么立即中止很重要?@deceze我的理解是cURL在一个单独的进程中运行,因此理论上它可以在脚本终止后继续运行。我不确定PHP是否杀死了cURL进程,或者是否允许它运行到完成。这只适用于“将PHP作为命令行脚本运行时”。布拉德利谈到“点击网络浏览器中的停止按钮”。
ignore_user_abort(false);