【发布时间】:2011-10-16 05:10:51
【问题描述】:
我只能从其中一个回调函数中想到 curl_close()。 但是php会抛出警告:
PHP 警告:curl_close():尝试从回调中关闭 cURL 句柄。
有什么想法吗?
【问题讨论】:
-
您将需要发布更多代码。
-
您能否添加更多信息,例如为什么您要在完成之前关闭传输
我只能从其中一个回调函数中想到 curl_close()。 但是php会抛出警告:
PHP 警告:curl_close():尝试从回调中关闭 cURL 句柄。
有什么想法吗?
【问题讨论】:
如果问题是执行 curl 花费的时间太长,您可以设置一个时间,例如
<?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;
【讨论】:
你可以从回调函数返回 false 或者不是当前下载数据长度的东西来中止 curl
【讨论】:
我遇到了类似的问题,需要我能够在中间停止卷曲转移。这很容易在我个人的前十名“似乎有效的肮脏黑客”中名列前茅。
创建一个知道何时取消上传的 curl 读取函数。
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);
这将导致 curl 传输在上传期间中止。显然不理想,但它似乎有效。
【讨论】: