我试图用PHP取消一个已经启动的cURL请求。由于我一直在努力寻找一个好的解决方案,我现在被一个取消链接的功能所困,这个功能实际上不起作用,因为cURL正在下载内容。
unlink(/foobar/foo.txt): Resource temporarily unavailable in /project/delete.php on line 16
这段代码就是我现在遇到的问题:
unlink($fileLocation);
由于我没有使用cURL的经验,我不确定如何才能停止在我的下载部分中完成的cURL请求:
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_NOPROGRESS, false);
curl_exec($ch);
基本上是什么用例:用户下载一个文件,也应该有可能取消下载。我怎样才能做到这一点?
发布于 2018-12-13 05:13:10
这个First答案非常完美。但它只能与原始回调函数一起使用。例如,如果您将arg插入回调函数中,它将不起作用:
curl_setopt($ch, CURLOPT_PROGRESSFUNCTION,function ($resource, $download_size, $downloaded_size, $upload_size, $uploaded_size) use ($my_arg)
{
progressCallback($resource, $download_size, $downloaded_size, $upload_size, $uploaded_size, $my_arg);
}
);
并处理回调
function progressCallback($resource, $download_size, $downloaded_size, $upload_size, $uploaded_size, $my_arg) {
//some logic
if ($need_to_cancel) {
return 1;
}
}
https://stackoverflow.com/questions/51223679
复制相似问题