rTorrent libtorrent Statistic with PHP

Hari saya lagi coba main-main dengan rtorrent, apa sebenaranya rtorrent itu sendiri ? menurut wiki,
rTorrent is a text-based ncurses BitTorrent client written in C++, based on the libTorrent libraries for Unices (Rakshasa’s own, not the sourceforge libtorrent), with a focus on high performance and good code.
dari semua BitTorrent Client yang satu ini adalah favorit saya, ya karena dia berbasis teks. Berbasis teks? apa ndak susah tuh? Buat yang terbiasa dengan GUI tentu akan terasa sulit dan merepotkan, tapi keunggulan dari rtorrent ini adalah ; 1) Bisa running Background, 2) Custom Download/Upload Rate, 3) Bisa schedule script. 1. Bisa Running Background Ini yang paling saya suka, apalagi untuk server Linux dengan begini download torrent dapat ditinggalkan sampai selesai. 2. Custome Down/Up Rate Beberapa BitTorrent client mengharuskan minum Ratio tertentu antara Up dan Down yang kadang-kadang sangat mengganggu khususnya yang memiliki bandwidth yang kecil, kalo rtorrent bisa di set Up minimum sampai 1KB/s dan Down Unlimited 3. Schedule Script Dan yang ini menurut saya yang special di rtorrent, fitur schedule ini bisa mengatur thorttle settings misalnya mengatur download/upload rate pada jam tertentu, Auto load torrent file, auto stop torrent jika hardisk full atau memindahkan hasil download ke lokasi/harddisk tertentu Secara kesuluruhan rtorrent sangat powerfull dan High Performance. Berikut beberapa link mengenai rtorrent, mulai dari instalasi dan cara penggunaan :
  1. http://chaidir.wordpress.com/2007/05/19/rtorrent-torrent-client-berbasis-teks/
  2. http://libtorrent.rakshasa.no/rtorrent/rtorrent.1.html
  3. http://tutorialninjas.net/2007/01/18/how-to-install-rtorrent/
Download rTorrent disini Sehubungan dengan judul halaman ini dan dari link-link diatas, dikarena rtorrent dijalankan lewat `screen` untuk background proses timbul kesulitan bagi saya untuk mendapatkan informasi atau statistik dari file torrent yang sudang proses download. Setiap kali akan mengecek status terpaksa harus login dulu ke server, yang paling repot kalo menggunakan remote server. Saya sempat menggunakan TorrentFlux untuk yang berbasis web, setelah dilihat-lihat ternyata menggunakan BitTornado yang berbasis phyton. TorrentFlux menurut saya sangat bagus, apalagi proses instlasi, setting dan penggunaanya sangat mudah. Dikaitkan dengan masalah saya untuk cek status dengan TorrentFlux dapat terselesaikan. Sekarang muncul masalah baru, semakin banyak file torrent yang diproses semakin besar upload rate saya. Benar, satu file torrent minimum di set Upload 1KB/s berarti kalau ada 10 file torrent berarti 1x10 = 10KB/s hehehe... untuk ukuran koneksi di indonesia misalkan Telkom speedy yang hanya memberikan Up 128kbit/s atau setara dengan 16KByte/s berarti sisa Bandwidth Up saya adalah 16KB/s - 10KB/s = 6KB/s WALAH pantas saja kalo kirim email (apalagi ada attach filenya) sangat lambat (doh). Kembali ke rtorrent, dengan rtorrent masalah diatas mengenai Bandwidth Up Stream bisa diatasi karena rtorrent bisa di set upload rate secara global ke multi file torrent yang sedang proses. Jadi kalau diset Up = 1KB jika ada 10 file torrent maka up rate nya akan di bagi ke 10 torrent tersebut sesuai dengan permintaan, contohnya: saya asumsikan setiap file torrent masing-masing ada permintaan dengan besar upload yang sama, berarti upload rate akan dibagi 10. Jadinya 1KB/10 = 0.1KB untuk setiap torrent file yang sedang proses (Seeding). Kembali ke masalah rtorrent yang repot cek status, akhirnya masalah ini bikin tangan saya gatal karena terinspirasi dari TorrentFlux dan rtorstats. Dua-duanya berbasis dari Phyton, rtorstats adalah tools untuk mengenerate statis rtorrent ke HTML file, yang saya inginkan adalah fitur seperti TorrentFlux tapi menggunakan rtorrent bukan menggunakan BitTornado yang ada pada TorrentFlux. Repot Bukan!!!!.... Berdasarkan alasan-alasan diatas, saya pun mencoba melakukan riset untuk membuat tools seperti TorrentFlux dan rtostats namun berbasis PHP dan untuk mengakomodir semua kebutuhan saya untuk pemecahan masalah-masalah diatas. Sekedar highlight dulu, karena baru prototype, terpinspirasi dari TorrentFlux dan rtorstats ini hasil (result) dari classs.php-rtorstats.php run_php-rtorstats.php
$me = new rtorrent();

//Download multi-torrent with 1 configuration
//$me->runTorrent($torentID,$pathForTorrentFile,$max_Down,$max_Up,$pathToSaveFile);

$me->runTorrent("mytorrent","/home/torrents/movie/*.torrent",60,1,"/home/downloads/movie/");
sleep(1);

//Download single-torrent with 1 configuration
//$me->runTorrent("smsISO","/home/torrent/linux.iso.torrent",0,1,"/home/downloads/aplikasi/");
//sleep(1);

//Download single-torrent with 1 configuration
//$me->runTorrent("ghost","/home/torrent/ubuntu.iso.torrent",0,1,"/home/downloads/aplikasi/");


// GeStats
// $me->startStat([multi|single],$torrentID); --> return ARRAY

print_r($me->startStat('multi','mytorrent'));

//print_r($me->startStat('single','smsISO'));

//print_r($me->startStat('single','ghost'));

// Kill Torrent
//$me->killTorrent($torrentID);

$me->killTorrent('mytorrent');
Hasil keluaran (return result) nya adalah sebagai berikut :
Array
(
   [size] => 267640832
   [name] => SMS.Live.CD-1.3.12.iso
   [comment] => [http://www.sleki.org] SMS.Live.CD-1.3.12.iso
   [owner] => BitTorrent/6030
   [announce] => http://open.tracker.thepiratebay.org/announce
   [playtime] =>
   [rtorrent] => Array
       (
           [chunks_done] => 1021
           [complete] => 1
           [custom1] =>
           [custom2] =>
           [custom3] =>
           [custom4] =>
           [custom5] =>
           [directory] => /home/downloads/aplikasi/
           [hashing] => 0
           [ignore_commands] => 0
           [key] => 114864097
           [priority] => 2
           [state] => 1
           [state_changed] => 1228742039
           [tied_to_file] => //home/downloads/aplikasi/torrent/SMS.Live.CD-1.3.12.iso.torrent
           [total_uploaded] => 0
       )

   [last_transaction] => 0
   [most_transaction] => 0
   [peers] => 4
   [chunk_len] => 262144
   [chunk_done] => 1021
   [total_download] => 267649024
   [total_download_persen] => 100
   [total_uploaded] => 0
   [state] => 1
   [complete] => 1
   [count_byte] => -8192
   [tfile] => SMS.Live.CD-1.3.12.iso.torrent
   [torrent_status] => SEEDING
   [ratio] => 0
   [PID] => 25551
   [speed] => 0
   [est] => --
)
Mohon maaf sourcenya belum di release, ya karena masih prototype.

Komentar

  1. tutorialnya dong untuk buat torrent client seperti torentflux..... share script phpnya gan ama tutorialnya.... ane lagi butuh bgt gan buat lengkapi TA ane.....

    BalasHapus

Posting Komentar