BT ファイルをサーバーにアップロードし、PHP を使用して BT シード ファイルを開き、PHP を使用してサーバーにダウンロードしたいと考えています。1 つはハード ディスクの容量を節約するため、もう 1 つは高速にするためです。
誰が知っていますか?コードを投稿してください
大きなファイルは許可されませんが、小さなファイルは問題ありません。
長い時間が経過すると、PHP 実行スクリプトがタイムアウトになります。
http://www.162cm.com/archives/287.html
<?php $file="铁血.torrent"; $fp=fopen($file,"rb"); $data=(readBt($fp)); /** @author renlu xu <helloasp@hotmail.com> 输出读入的数组。 */ print_r($data); /** @function readbt 读入bt文件; @param $fp 文件指针 @param $nowtype:当然的元数据类型 @return Array 一个保存当前元数据集的数组 */ function readBt($fp,$nowtype="DICT") { $nowindex=""; while(!feof($fp)) { $char=(string)fread($fp,1); /** 其实仔细研究一下,可能这里几个case的摆放位置,比如哪个在前哪个在后,对速度都是有影响的,不过咱们暂时不管它 */ switch($char) { case "1": case "2": case "3": case "4": case "5": case "6": case "7": case "8": case "9": case "0": { $nowindex.=$char; break; } case ":": { $nowtype="STRING"; $string=fread($fp,intval($nowindex)); $VARS[]=$string; $nowindex=""; $nowtype=""; break; } case "i": { $nowtype="NUMBER"; break; } case "e": { /** e是一个编码结束的标志,要看当前是何种编码。如果是number,直接保存当前读入的一系统数组;如果是列表(list)或字典(dictionary),则返回数组。 */ switch ($nowtype) { case "NUMBER": $VARS[]=intval($nowindex); $nowindex=""; break; case "LIST": return $VARS; break; case "DICT": return $VARS; break; } break; } /** 当开始一个列表或字典时,我为了让结果数组更清晰地显示目录关系,使用了递归。也可以不使用递归。 */ case "l": { $nowtype="LIST"; $VARS[]=readBt($fp,$nowtype); break; } case "d": { $nowtype="DICT"; $VARS[]=readBt($fp,$nowtype); break; } } } return $VARS; } fclose($fp); ?>
+1
大きなファイルはダウンロードできません。小さなファイルは大丈夫です。
時間が経つと、PHP 実行スクリプトがタイムアウトになります
http://www.162cm.com/archives/287.html
<?php $file="铁血.torrent"; $fp=fopen($file,"rb"); $data=(readBt($fp)); /** @author renlu xu <helloasp@hotmail.com> 输出读入的数组。 */ print_r($data); /** @function readbt 读入bt文件; @param $fp 文件指针 @param $nowtype:当然的元数据类型 @return Array 一个保存当前元数据集的数组 */ function readBt($fp,$nowtype="DICT") { $nowindex=""; while(!feof($fp)) { $char=(string)fread($fp,1); /** 其实仔细研究一下,可能这里几个case的摆放位置,比如哪个在前哪个在后,对速度都是有影响的,不过咱们暂时不管它 */ switch($char) { case "1": case "2": case "3": case "4": case "5": case "6": case "7": case "8": case "9": case "0": { $nowindex.=$char; break; } case ":": { $nowtype="STRING"; $string=fread($fp,intval($nowindex)); $VARS[]=$string; $nowindex=""; $nowtype=""; break; } case "i": { $nowtype="NUMBER"; break; } case "e": { /** e是一个编码结束的标志,要看当前是何种编码。如果是number,直接保存当前读入的一系统数组;如果是列表(list)或字典(dictionary),则返回数组。 */ switch ($nowtype) { case "NUMBER": $VARS[]=intval($nowindex); $nowindex=""; break; case "LIST": return $VARS; break; case "DICT": return $VARS; break; } break; } /** 当开始一个列表或字典时,我为了让结果数组更清晰地显示目录关系,使用了递归。也可以不使用递归。 */ case "l": { $nowtype="LIST"; $VARS[]=readBt($fp,$nowtype); break; } case "d": { $nowtype="DICT"; $VARS[]=readBt($fp,$nowtype); break; } } } return $VARS; } fclose($fp); ?>