Test Block Top

The Blog...
Articles, Tips & Trick and Other Interesting Information...

18 Juli 2010

Trik Split & Merge File Via FTP Menggunakan Script PHP

Beberapa hari yang lalu saya terima email dari visitor blog ini. Orang tersebut tanya perihal masalah yang dia alami:

.... Ada nggak cara supaya file berukuran besar bisa dipecah menjadi beberapa bagian? Sehingga saya bisa upload setahap demi setahap, kemudian baru digabungkan kembali di webserver...


Coba pakai Compressing Software winrar, waktu mau diekstract melalui file manager cPanel hasilnya 'file tidak dikenali' (bisa jika punya akses ke SSH). Coba lagi pakai WinZIP yang terpotong menjadi beberapa bagian, tetap nggak bisa (karena hanya bisa extract 1 file). Setelah sekian kali terus mencoba, Alhamdulillah berhasil. Caranya seperti ini.

Pertama, local server (terserah mau pakai WAMP atau XAMP) harus sudah terinstall di komputer/PC. Jika belum tahu cara install WAMP, baca panduannya di sini. Setelah itu buka direktori dimana wamp server terinstall, di PC saya "C:\wamp", cari direktori folder "www" » kemudian buat folder baru dengan nama apa saja, contoh "split-merge". Screenshot direktori seperti gambar di bawah ini:

Screenshot direktori wamp server


Untuk mulai split file, pertama tempatkan file yang ingin displit ke folder "split-merge". Untuk file yang sudah mempunyai ekstensi (mp3, wav, avi, flv, sql, exe, psd, jpeg, gif, png, dll) tidak menjadi masalah jika anda langsung menaruh pada folder "split-merge". Namun bagaimana jika anda ingin upload beberapa file berukuran besar yang berada pada satu folder. Maka cara terbaik yang harus anda lakukan adalah compress folder tersebut menggunakan Winrar, winzip atau software file compress lainnya.

Namun ingat, compress dengan dengan ekstensi file "ZIP", kemudian taruh zip file tersebut pada folder "split-merge".

Kemudian buat file php baru seperti kode di bawah ini (fungsi php split & merge).

[php]
<?php
class split_merge
{
/*Fungsi PHP yang diperlukan untuk memecah (split) file*/
function split_file($file_name,$parts_num)
{
$handle = fopen($file_name, 'rb') or die("error opening file");
$file_size = filesize($file_name);
$parts_size = floor($file_size/$parts_num);
$modulus=$file_size % $parts_num;
for($i=0;$i<$parts_num;$i++)
{
if($modulus!=0 & $i==$parts_num-1)
$parts[$i] = fread($handle,$parts_size+$modulus) or die("error reading file");
else
$parts[$i] = fread($handle,$parts_size) or die("error reading file");
}
//Akhir File Handle
fclose($handle) or die("error closing file handle");

//Perintah Split File
for($i=0;$i<$parts_num;$i++)
{
$handle = fopen('splited_'.$i, 'wb') or die("error opening file for writing");
fwrite($handle,$parts[$i]) or die("error writing splited file");
}
//Akhir file handle
fclose($handle) or die("error closing file handle");
return 'OK';
}//Akhir Fungsi split_file

/*Fungsi PHP yang diperlukan untuk menggabungkan file*/

function merge_file($merged_file_name,$parts_num)
{
$content='';
//Perintah ambil potongan file
for($i=0;$i<$parts_num;$i++)
{
$file_size = filesize('splited_'.$i);
$handle = fopen('splited_'.$i, 'rb') or die("error opening file");
$content .= fread($handle, $file_size) or die("error reading file");
}
//Perintah gabungkan file
$handle=fopen($merged_file_name, 'wb') or die("error creating/opening merged file");
fwrite($handle, $content) or die("error writing to merged file");
return 'OK';
}//Akhir merge_file
}//akhir class split_merge
?>
[/php]

Copy dan pastekan kode di atas pada text editor (notepad atau aplikasi sejenis lainnya), kemudian simpan pada direktori folder "split-merge"dengan nama "split_merge.inc.php". Buat satu lagi file php seperti kode di bawah ini (Fungsi PHP yang diperlukan untuk memecah/split file menjadi beberapa bagian/potongan):

[php]
<?php

//Fungsi PHP yang diperlukan untuk memecah (split) file
require_once('split_merge.inc.php');

//Tentukan nama file beserta nama file ekstensinya yang ingin dipecah
$file_name='video_test.zip';

//Tentukan jumlah potongan (split) file yang anda inginkan
$parts_num=8;

$w=new split_merge();

//Perintah untuk split file
$w->split_file($file_name,$parts_num) or die('Error spliting file');
echo 'File Berhasil Dipecah Menjadi Beberapa Potong File';

?>
[/php]

Copy dan pastekan kode di atas pada text editor, simpan dengan nama "split.php" pada direktori folder "split-merge". Beberapa kode di atas yang harus anda edit:

→ "$file_name='video_test.zip';" » "video_test.zip"sesuaikan dengan nama file anda diakhiri dengan nama ekstensi file.

→ "$parts_num=8;" » "8" adalah jumlah potongan file yang akan dihasilkan ketika proses split berlangsung (contoh jika anda mempunyai file berukuran 10MB dan ingin displit dengan ketentuan ukuran masing-masing file 2MB, maka angka 8 ini anda ganti dengan 5 => 10MB/2MB=5).

Jika sudah maka pada direktori "split-merge" akan berisi file antara lain split.php, split_merge.inc.php dan file yang ingin displit (contoh: video_test.zip). Screenshotnya seperti gambar di bawah ini:

Screenshot direktori folder split file ftp

Nah sampai di sini sudah bisa mulai proses split file. Sekarang jalankan aplikasi WAMP Server yang baru saja anda install. Setelah itu buka aplikasi browser anda, ketikkan "http://localhost/" atau "http://127.1.0.1/", maka akan keluar halaman seperti gambar di bawah ini:

Screenshot split file webserver ftp

Klik pada link "split-merge", maka akan keluar halaman seperti gambar di bawah ini:

Screenshot split file ftp

Klik pada link "split.php", jika berhasil maka akan keluar pesan konfirmasi seperti gambar di bawah ini:

hasil split fiile ftp

Atau biar cepat, anda bisa langsung mengetikkan alamat "http://localhost/split-merge/split.php" pada address bar web browser. Nah sekarang hapus file "video_test.zip" dan "split.php" karena sudah tidak diperlukan lagi. Buat file php baru (Fungsi PHP yang diperlukan untuk menggabungkan potongan file pada ftp) seperti kode di bawah ini:

[php]
<?php

//Fungsi PHP yang diperlukan untuk menggabungkan potongan file
require_once('split_merge.inc.php');

//Tentukan nama file yang akan digabungkan (merge)
$merged_file_name='immrg.zip';
$parts_num='8';
$w=new split_merge();

//Perintah untuk menggabungkan potongan file
$w->merge_file($merged_file_name,$parts_num) or die('Error merging files');
echo '<br>Potongan File Berhasil Digabungkan';

?>
[/php]

Copy dan pastekan kode di atas pada text editor. Edit:

→ "$merged_file_name='immrg.zip';" » "video_test.zip" ganti dengan nama terserah anda namun nama file ekstensi (.zip) tetap dipakai. Nama ini akan digunakan sebagai nama file utuh ketika potongan (split) file digabungkan.

→ Edit "$parts_num='8';" » "8" sama dengan angka sewaktu anda edit file "split.php".

Kemudian simpan file di atas dengan nama "merge.php" pada direktori "split-merge". Sekarang upload semua file (split_merge.inc.php, merge.php, splited_0...dst sampai splited_akhir) pada webserver menggunakan software ftp. Buat dahulu satu folder khusus pada root "public_html", contoh buat folder baru dengan nama "merge". Upload semua file ke direktori folder "merge".

Upload split file ke ftp webserver

Setelah terupload semua, sekarang siap untuk menggabungkan (merge) file. Jika nama direktori untuk menaruh file sama dengan yang saya contohkan di atas, pada address bar web browser ketikkan "http://www.domain-anda.com/merge/merge.php". Jika berhasil maka akan keluar halaman pesan konfirmasi sukses seperti di bawah ini.

merge split file ftp berhasil

Jika anda upload file selain ekstensi ".zip" maka sampai di sini sudah selesai, hapus semua file php dan file split karena sudah tidak diperlukan lagi. Namun jika anda upload file dengan ekstensi ".zip" sedangkan file yang diperlukan masih belum tersekstrak, maka anda dapat ekstrak file pada halaman "File Manager" yang dapat anda akses via halaman cPanel. Login ke akun cPanel anda » klik pada "File Manager", setelah itu navigasikan ke folder "merge". Klik kanan file zip yang ingin anda ekstract, kemudian klik "extract". Selesai file anda sudah terekstract.

Semoga membantu & have fun...
:D

4 komentar:

  1. thanks banget gan infonya...

    tapi, pas saya mau split file 900an MB error gan, tulisannya kayak gini

    Fatal error: Allowed memory size of 67108864 bytes exhausted (tried to allocate 201430054 bytes) in /home/tolissha/public_html/transfer/spliter/split_merge.inc.php on line 16

    mohon pencerahannya...

    BalasHapus
  2. "Fatal error: Allowed memory size of 67108864 bytes exhausted (tried to allocate 201430054 bytes) in /home/tolissha/public_html/transfer/spliter/split_merge.inc.php on line 16" itu berarti memory yang diperlukan untuk merge file melebihi batas maksimal php yang telah ditentukan oleh hoster agan.

    Jika webserver yang agan pakai menggunakan apache atau nginx, agan bisa coba mengakalinya dengan cara buat file baru "php.ini". Kemudian isikan code berikut ini pada file "php.ini":

    php_value memory_limit = "128M"

    128M atau jika diinginkan pakai nilai yang lebih besar.

    Namun jika webserver yang agan pakai menggunakan Litespeed, terpaksa harus minta upline (hoster) agan untuk menaikkan value php memory limit.
    Semoga membantu gan
    :D

    BalasHapus
  3. ahirnya setelah keliling google, dapat juga caranya, trnyata hanya nambahin code

    ini_set('memory_limit', '2000M');
    -----------------------------------------------------------------------------------------
    mau nanya lagi nih gan, misalnya sy punya file 1 GB, trus mau di split jadi lima file. Masing-masing ukurannya 200MB.

    angka 8 nya saya ganti jadi 5 => 1000MB/200MB=5) jadinya seperti ini

    $parts_num=5 => 1000MB/200MB=5);

    tapi ga' ada efeknya gan, malah ga' bisa nye-plit.
    itu dah bnr ga' gan kode yg sy rubah.
    mohon pencerahannya

    BalasHapus
  4. Maaf gan lama balasnya, baru sempat cek email.

    Kemungkinan PHP Memory Limit nya kurang besar. Bisa diakali dengan menaikkan nilai "memory_limit" pada file "php.ini", atau pakai trik agan di atas (ini_set(‘memory_limit’, ’2000M’);).

    Saya coba split file 900 MB tidak ada masalah, ini screenshotnya:

    http://2.bp.blogspot.com/-6XdutHPVTWY/T4nX9K0IcLI/AAAAAAAAAAM/hanzva7ZrXU/s1600/split_file_php_script.gif
    http://1.bp.blogspot.com/-ifAbbP0x1nw/T4nYASTST3I/AAAAAAAAAAU/E_GyxBNO33g/s1600/split_file_php_script2.gif

    BalasHapus

Loncat ke Atas ↑