Intereting Posts
Публикация данных для самостоятельного использования с помощью jquery 404 Ответ заголовка, но страницы отображаются нормально? PHP: преобразовать специфические боснийские символы в не-боснийские (стандартные символы utf8) Загрузка нескольких изображений с одним полем ввода XML-анализ синтаксического анализа данных SOAP: зарезервированное имя XML Заменить диакритические символы «эквивалентным» ASCII в PHP? Как получить вывод PHP в переменную? ICalendar-парсер в PHP, который поддерживает часовые пояса Youtube API v3, как получить длительность видео? Codeignitor, Facebook javascript SDK, PHP SDK Перенаправление после входа в facebook не getUser () до обновления Проблемы с strftime в PHP Как получить консоль Linux $ COLUMNS и $ ROWS из PHP cli? PHP – доступ к глобальным переменным во всех функциях класса PHP Передать переменную на следующую страницу Что значит ? среднее значение в php при чтении и интерпретации URL-адреса

cURL Загрузить Прогресс в PHP не работает?

Я новичок в PHP и пытаюсь добавить индикатор выполнения к существующему скрипту PHP, используя следующий метод:

$ch=curl_init() or die("ERROR|<b>Error:</b> cURL Error"); curl_setopt($ch, CURLOPT_URL, $c); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE); curl_setopt($ch, CURLOPT_FILE, $fp); //####################################################// // This is required to curl give us some progress // if this is not set to false the progress function never // gets called curl_setopt($ch, CURLOPT_NOPROGRESS, false); // Set up the callback curl_setopt($ch, CURLOPT_PROGRESSFUNCTION, 'callback'); // Big buffer less progress info/callbacks // Small buffer more progress info/callbacks curl_setopt($ch, CURLOPT_BUFFERSIZE, 128); //####################################################// curl_exec($ch); curl_close($ch); fclose($fp); 

Функция обратного вызова:

  function callback($download_size, $downloaded, $upload_size, $uploaded) { $percent=$downloaded/$download_size; // Do something with $percent echo "$percent"; } 

Теперь я буквально скопировал этот пример с сайта PHP, но это не работает? Моя версия PHP – это 5.2.11, Pls. подскажите, что может быть неправильно?

Изменить: я вызываю этот php-скрипт из другого скрипта.

Информация: Я застрял с ветвью 5.2.X, поскольку мой веб-хост говорит, что cPanel еще не поддерживает ветку 5.3.x, любые решения для этого?

Кажется, что не существует CURLOPT_PROGRESSFUNCTION перед php 5.3.

Взгляните на http://cvs.php.net/viewvc.cgi/php-src/ext/curl/interface.c?view=log, и вы найдете две записи - [DOC] MFH: #41712, implement progress callback . Один для php5.3 и один для ветки php6.

edit: С php 5.2.x вы должны иметь возможность установить stream_notification_callback

 function foo() { $args = func_get_args(); echo join(', ', $args), "\n"; } $ctx = stream_context_create(null, array('notification' =>'foo')); $fpIn = fopen('http://php.net/', 'rb', false, $ctx); file_put_contents('localfile.txt', $fpIn); 

Что касается последнего комментария, указанный код требует 5.3, потому что второй параметр stream_context_create () был добавлен в 5.3. Однако, заменив эту строку следующими работами в 5.2:

 $ctx = stream_context_create(); stream_context_set_params($ctx, array("notification" => "stream_notification_callback")); 

И в связанных новостях в документации stream_notification_callback () в руководстве по PHP есть пример, который полностью использует / создает индикатор выполнения, поэтому проверьте его.

http://php.net/stream_notification_callback