开发者

How to use stream_notification_callback with cURL

Is it possible to use stream_notification_callback with cURL?

I would like to adapt the example #1 that I have found here http://www.php.net/manual/en/function.stream-notification-callback.php, to my cURL function below to create/update a text file that contains the downloaded bytes.

I know that CURLOPT_PROGRESSFUNCTION is implemented in php 5.3 but I'm running php 5.2 and I can't upgrade.

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_seto开发者_JS百科pt($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());
}

I know that I will have to use file_put_contents to replace the "case STREAM_NOTIFY_PROGRESS" part like this...

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

...but my question is how to adapt the two codes? Thanks in advance.


I'm afraid your options are either not to use curl (and use the much more limited HTTP wrapper instead or even sockets) or upgrade.

PHP 5.2 is dead (not more updates, even security fixes). You can also try to compile PHP 5.3 for PHP 5.2 (there will likely be only a few easy issues) or even backport the CURLOPT_PROGRESSFUNCTION support.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜