Download file besar dengan php dan CURL

Download file besar dengan php dan CURL

Download file yang besar mungkin sekarang tidak terlalu merepotkan mengingat sudah banyak koneksi internet dari berbagai provider di indonesia yang mendukung kecepatan yang sangat luar biasa lelet cepat. Anda tinggal menggunakan download manager seperti internet download manager atau free download manager yang sudah mendukung resumable download, anda bisa mempause download dan melanjutkannya kapan saja. Tapi bagaimana jika anda ingin mendownload sebuah file yang besar dan ingin memasukan file tersebut ke website/hosting yang ada, jika harus mendownload lalu mengupload tentunya itu sebuah pemborosan baik waktu ataupun kuota internet anda, belum lagi jika gagal ditengah jalan sewaktu mengupload pasti membuat anda menghela nafas panjang. Terus apakah ada cara lain selain dengan cara diatas, sebenarnya banyak cara jika kita memiliki akses ke terminal di server tersebut, kita bisa menggunakan fungsi wget di terminal atau text mode browser dan masih banyak cara lain, tapi yang jadi masalah disini adalah biasanya penyedia hosting tempat menyimpan website kita tidak memberikan akses ke terminal server karena alasan keamanan, terus bagaimana solusi yang bisa diterapkan untuk memindahkan file tersebut antar server.

php-curl

Oke kali ini kita akan mencoba membuat sebuah file downloader dengan menggunakan PHP dan lib CURL yang ada di php. Scriptnya sangat sederhana hanya mungkin sekitar 12 line of code. Downloader ini bisa memindahkan file sebesar kurang lebih 1GB dan telah diuji beberapa kali dan sukses. Downloader ini terbatas penggunaannya karena hanya bisa untuk file yang memiliki direct link saja(tidak bisa untuk download dari situs seperti mediafire) dan terbatas pada protokol HTTP (tidak bisa untk HTTPS), namun script ini sangat bisa dikembangkan lebih lanjut jika anda tertarik. Berikut ini adalah script yang bisa digunakan sebagai PHP downloader.

ini_set('max_execution_time', 0);
/*set time out menjadi unlimit agar download tidak gagal di tengah jalan karena time out */
$url  = "http://ahmadza.com/ahmad.mkv"; //url file yang ada di download
$path = new SplFileInfo($url); //fungsi untuk mendapatkan nama file dari URL secara otomatis
$nama = $path->getFilename(); //fungsi untuk mendapatkan nama file dari URL secara otomatis


$fp = fopen($nama, 'w');
/*menuliskan hasil download kedalam sebuah file agar tidak memakan memory yang besar */

//inisialisasi CURL
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_FILE, $fp);


//eksekusi download file
$data = curl_exec($ch);
curl_close($ch); //close koneksi CURL
fclose($fp); //close file

Beberapa batasan yang ada di script ini diantaranya adalah script ini tidak bisa digunakan untuk mendownload file yang tidak direct link dan juga belum mendukung host yang mewajibkan HTTP_REF. Terima kasih.

Refrensi lanjut mengenai CURL bisa kunjungi http://php.net/manual/en/book.curl.php

Komentar via Facebook

Share this post

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *