2012-08-05 65 views
1

在我的函數中,我試圖在文件下載超過某些里程碑時執行函數。所以在這種情況下,我想下載10mb,然後回顯里程碑,然後再重複下一個10mb。如果PHP內部的語句捲曲寫功能

我正在下載的文件大約是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

只是要去猜測,真正的問題是變量$downloaded$milestone不在範圍,這個功能和/或每個函數執行時間被重置。你可能想使$downloadedstatic,包括$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; 
}); 
+0

謝謝,這最初是一個問題,但它的工作時,里程碑是在10000左右,有時它的工作原理,有時它不」噸,但從未工作時,大約10000(大致)。這些變量絕對在範圍之內。 – 2012-08-05 23:24:03