如果PHP Curl Writefunction里面的语句

时间:2012-08-05 18:41:24

标签: php curl

在我的功能中,我试图在文件下载超过某些里程碑时执行功能。所以在这个例子中我想下载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;
});

1 个答案:

答案 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;
});