[英]If statements inside PHP Curl Writefunction
在這里的功能中,當文件下載超過某些里程碑時,我試圖執行功能。 因此,在這種情況下,我想下載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;
});
只是要猜測真正的問題是變量$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;
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.