Как использовать stream_notification_callback с cURL - PullRequest
5 голосов
/ 12 мая 2011

Можно ли использовать stream_notification_callback с cURL?
Я хотел бы адаптировать пример # 1, который я нашел здесь http://www.php.net/manual/en/function.stream-notification-callback.php,, к моей функции 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 Ответ

1 голос
/ 12 мая 2011

Боюсь, вы можете либо не использовать curl (и использовать вместо него гораздо более ограниченную оболочку HTTP или даже сокеты), либо обновлять.

PHP 5.2 не работает (не больше обновлений, даже исправлений безопасности). Вы также можете попробовать скомпилировать PHP 5.3 для PHP 5.2 (вероятно, будет только несколько простых проблем) или даже сделать бэкпорт поддержки CURLOPT_PROGRESSFUNCTION.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...