Skip to content

Php Curl ile yarım downloadları tamamlamak

27 Mayıs 2013 | PHP | Yorum Yok

Birçok download manager programında olan duraklat/devam et gibi download seçenekleri mevcut. Peki bunu php ile yapamaz mıyız? tabiki yapabiliriz. Peki zor mu tabi ki değil.

$ch = curl_init("Download edilecek URL");
// http://www.denizyildirim.com/buyukdosya.zip sekilinde olacak
curl_setopt($ch, CURLOPT_URL, "Download edilecek URL");
if (file_exists("Kaydedilecek dosya")) { // Eğer daha önce indirilmişse
$from = filesize("Kaydedilecek dosya"); // nekadarı indiğini öğren
curl_setopt($ch, CURLOPT_RANGE, $from . "-"); // ne kadarı indiyse o noktadan downloada başla
}
$fp = fopen ($this->savePath, 'a+'); // İndirdiğimiz dosyamızın kaldığı yerden tamamlayacak şekilde aç
// Servera hangi browser kullandığımızı gönderelim
curl_setopt($ch,CURLOPT_USERAGENT,'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13');
chmod("Kaydedilecek dosya", 0755); // kayıtlı dosyaya yazma hakkımız yoksa o hakkı verelim
curl_setopt($ch, CURLOPT_TIMEOUT, 1950); // download işlemi için ne kadar uğraşsın
curl_setopt($ch, CURLOPT_PROGRESSFUNCTION, 'progress'); // Progress-bar fonksiyonumuz
curl_setopt($ch, CURLOPT_NOPROGRESS, false); // üstteki fonksiyonun çalışması için
curl_setopt($ch, CURLOPT_FILE, $fp); // Curl işleminin dosya download olduğunu belirtiyoruz
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); // yönlendirme varsa takip et
curl_exec($ch); // Curl işlemine başla
curl_close($ch); // Curl işlemini bitir
fclose($fp); // Açtığımız dosyayı kapat.
chmod("Kaydedilecek dosya", 0644); // Dosya yazma iznini kapat.

Bu şekilde yaptığımızda nasıl oluyor. Şimdi varsayalım 100mb lik bir dosyamız var. Bunun 80mb’sini indirdik sonra kalan 20mb’ini indirecez. İlk işlemde;
%0 => 0mb
%50 => 50mb
%80 => 80mb

olup burada donacak. İkinci kez başladığımızda. ilerleme çubuğumuz(progress-bar):
%0 => 80mb
%100 => 100mb

şeklinde olacak. Ve kullanıcı sanki sıfırdan 100mb indiriyormuş gibi olacak lakin 20mb indirecek.

Bu Ürünü Paylaş ahanda single sayfasi

  • Delicious
  • Digg
  • Newsvine
  • RSS
  • StumbleUpon
  • Technorati
  • Twitter

Benzer Yazılar

Bununla alakalı yazı yok henüz.

Yorumlar

Bu yazıda henüz yorum yok.

Yeni Yorum Yaz


× dört = 8