1

在我的函数中,我试图在文件下载超过某些里程碑时执行函数。所以在这种情况下,我想下载 10mb,然后回显里程碑,然后再次重复到下一个 10mb。

我正在下载的文件大约 300mb,所以我希望该函数被调用 30 次。

里程碑需要是什么?字节?千字节?不管它是什么,如果我超过 10000,它就不再调用 if 里面的任何东西。

curl_setopt($ch, CURLOPT_WRITEFUNCTION, function($ch, $chunk) {
$chunksize = strlen($chunk);
$downloaded .= $chunksize;
if($downloaded > $milestone){
    echo "milestone";
    $downloaded = 0;
}
return $chunksize;
});
4

1 回答 1

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;
});
于 2012-08-05T19:35:08.357 回答