我只能想到其中一个回调函数的curl_close()。 但是php会发出警告:
PHP警告:curl_close():尝试从回调中关闭cURL句柄。
任何想法如何做到这一点?
答案 0 :(得分:3)
你可以返回false或者当前下载的数据长度从回调函数返回到中止curl
答案 1 :(得分:0)
如果问题是花费太长时间来执行卷曲,则可以设置时间,例如
<?php
$c = curl_init('http://slow.example.com/');
curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
curl_setopt($c, CURLOPT_CONNECTTIMEOUT, 15);
$page = curl_exec($c);
curl_close($c);
echo $page;
答案 2 :(得分:0)
我有一个类似的问题,需要我能够在中间停止卷曲转移。这很容易发生在我个人十大“看似无效的肮脏黑客”中。
创建一个卷曲读取函数,该函数知道何时取消上传。
function curlReadFunction($ch, $fileHandle, $maxDataSize){
if($GLOBALS['abortTransfer'] == TRUE){
sleep(1);
return "";
}
return fread($fileHandle, $maxDataSize);
}
如果数据读取率在一段时间内下降得太低,请告诉Curl停止。
curl_setopt($ch, CURLOPT_READFUNCTION, 'curlReadFunction');
curl_setopt($ch, CURLOPT_LOW_SPEED_LIMIT, 1024);
curl_setopt($ch, CURLOPT_LOW_SPEED_TIME, 5);
这会导致卷曲传输在上传过程中中止。显然不理想,但似乎有效。