BT種子下載器的存在已經成為網絡世界的常態,而php bt源碼則是其中比較常見的一種。
相對于一些下載器界面簡單,功能單一的情況,php bt源碼在功能上有著一定的突破,例如,支持多線程下載,支持同時下載多個種子文件等功能,方便用戶同時進行多個下載任務。
//多線程下載
for ($i=0;$i<$thread_num;$i++){
$args="_down_thread_start=".($i*$per)."&_down_thread_end=".$down_seek;
$timeout = 3600;
$url =$GLOBALS['down_http']."rang_".$args;
$fp[$i]=fsockopen($host,$port,$errno,$errstr,$timeout);
socket_set_blocking($fp[$i],2);//發送http請求
stream_set_blocking($fp[$i],true);
fputs($fp[$i], "GET ".$url." HTTP/1.1\r\n");
fputs($fp[$i],"Host:".$host.":".$port."\r\n");
fputs($fp[$i],"User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)\r\n");
fputs($fp[$i],"Accept: */*\r\n");
fputs($fp[$i],"Accept-Language: zh-cn\r\n");
fputs($fp[$i],"Connection: Close\r\n\r\n");
}
php bt源碼還有一個比較有用的功能是支持自動解壓縮,當下載的是壓縮文件時,可以自動將壓縮文件解壓縮到指定的目錄,方便用戶直接使用。
//自動解壓縮
if( $urltype=="zip"){
$zip = new ZipArchive();
if ($zip->open($filename.down_sp.$suffix ) === TRUE) {
$zip->extractTo($filename);
$zip->close();
if(is_file($filename.down_sp.$suffix)) //刪除壓縮包
{
unlink($filename.down_sp.$suffix);
}
} else {
throw new Exception('PHP ZipArchive Class Warning: ZipArchive Error while compressing file'.$filename.down_sp.$suffix);
}
}
php bt源碼主要是通過對種子文件進行解析和分析,然后模擬客戶端與遠程服務器交互,完成文件下載的過程。
整個下載過程比較繁瑣,需要對數據進行不斷的加密和解密,在代碼的實現過程中需要注意各種數據類型和結構的處理。
總之,對于需要進行多個下載任務的用戶來說,php bt源碼是一個比較好的選擇。
上一篇php bt清洗
下一篇php BtcTool