2011-05-12 57 views
5

是否可以使用stream_notification_callback和cURL?
我想修改我在這裏找到的示例#1 http://www.php.net/manual/en/function.stream-notification-callback.php,以下我的cURL函數來創建/更新包含下載字節的文本文件。如何使用stream_notification_callback和cURL

我知道CURLOPT_PROGRESSFUNCTION是在PHP 5.3中實現的,但我運行的是PHP 5.2,但無法升級。

private function Save($url) { 
    $this->SetTempFileName(time()); 
    $file = fopen($this->GetTempVidFileName(), 'w'); 
    $ckfile = tempnam("/tmp_cookie", "CURLCOOKIE"); 
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_FILE, $file); 
    curl_setopt($ch, CURLOPT_HEADER, 0); 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
    curl_setopt($ch, CURLOPT_COOKIEFILE, $ckfile); 
    curl_setopt($ch, CURLOPT_COOKIEJAR, $ckfile); 
    curl_exec($ch); 
    curl_close($ch); 
    fclose($file); 
    return is_file($this->GetTempFileName()); 
} 

我知道,我將不得不使用file_put_contents更換這樣的「案例STREAM_NOTIFY_PROGRESS」的一部分......

case STREAM_NOTIFY_PROGRESS: 
file_put_contents('progress.txt', $bytes_transferred); 
break; 

...但我的問題是如何將兩個代碼適應? 在此先感謝。

+0

如何嘗試使用stream_context_create而不是curl。沒有上下文,你不能使用stream_notification_callback。 – 2011-05-12 10:07:47

回答

1

恐怕你的選擇要麼不使用curl(而要使用更多受限的HTTP包裝器,或者甚至是套接字)或升級。

PHP 5.2已經死了(沒有更新,甚至安全修復)。您也可以嘗試爲PHP 5.2編譯PHP 5.3(可能只有一些簡單的問題),或者甚至支持CURLOPT_PROGRESSFUNCTION支持。