如何使用cURL使用stream_notification_callback

时间:2011-05-12 09:47:18

标签: php curl

是否可以将stream_notification_callback与cURL一起使用?
我想将我在此处http://www.php.net/manual/en/function.stream-notification-callback.php找到的示例#1调整到下面的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替换“case STREAM_NOTIFY_PROGRESS”部分,就像这样......

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

...但我的问题是如何调整这两个代码? 提前谢谢。

1 个答案:

答案 0 :(得分:1)

我担心您的选择要么不使用curl(而是使用更有限的HTTP包装器,甚至是套接字)或升级。

PHP 5.2已经死了(不是更新,甚至安全修复)。您还可以尝试为PHP 5.2编译PHP 5.3(可能只有一些简单的问题),甚至可以向后移植CURLOPT_PROGRESSFUNCTION支持。