PHP çalışmıyor indirmek ilerleme Curl?

2 Cevap php

Ben bir PHP newbie ve aşağıdaki yöntemi kullanarak mevcut bir PHP komut dosyası için bir ilerleme bar eklemek için çalışıyor:

$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);

The callback function :

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

Şimdi, ben tam anlamıyla PHP sitesinden bu örneği kopyalayıp yapıştırılan ama bu çalışmıyor? Benim PHP version Pls, 5.2.11 olduğunu. yanlış ne olabilir önermek?

Edit : I am calling this php script from another script.

Information : I am stuck with 5.2.X branch as my web-host says cPanel does not support the 5.3.x branch yet, any solutions for this ??

2 Cevap

5.3 php önce CURLOPT_PROGRESSFUNCTION orada görünmüyor.

http://cvs.php.net/viewvc.cgi/php-src/ext/curl/interface.c?view=log bir göz atın ve iki girdileri - [DOC] MFH: #41712, implement progress callback bulacaksınız. PHP5.3 için tek ve PHP6 şube için.

edit: php 5.2.x ile ayarlamak mümkün olmalıdır 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);

Son açıklama ile ilgili olarak, stream_context_create () 'in ikinci parametresi 5,3 ilave edildi çünkü kod 5.3 gerektirdiğini söyledi. Ancak, 5.2 aşağıdaki eserler ile bu satırı yerine:

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

Ve ilgili haberlerde, PHP kılavuzun içinde stream_notification_callback () belgelerine tam bir ilerleme çubuğu oluşturur / kullanan bir örnek vardır, yani check it out.

http://php.net/stream_notification_callback