在我的功能中,我试图在文件下载超过某些里程碑时执行功能。所以在这个例子中我想下载10mb,然后回复里程碑,然后再次重复到下一个10mb。
我正在下载的文件大约是300mb,所以我希望这个函数被调用30次。
里程碑需要什么?字节?千字节?不管它是什么,如果我超过10000,它就不会再调用任何东西了。
curl_setopt($ch, CURLOPT_WRITEFUNCTION, function($ch, $chunk) {
$chunksize = strlen($chunk);
$downloaded .= $chunksize;
if($downloaded > $milestone){
echo "milestone";
$downloaded = 0;
}
return $chunksize;
});
答案 0 :(得分:0)
只是猜测真正的问题是变量$downloaded
和$milestone
不在此函数的范围内和/或每次执行函数时都会重置。您可能希望制作$downloaded
static
并在周围范围内加入$milestone
:
$milestone = /* something */;
curl_setopt($ch, CURLOPT_WRITEFUNCTION, function ($ch, $chunk) use ($milestone) {
static $downloaded = 0;
$chunksize = strlen($chunk);
$downloaded .= $chunksize;
if ($downloaded > $milestone){
echo "milestone";
$downloaded = 0;
}
return $chunksize;
});