我想把BT文件上传到服务器并用PHP打开BT种子文件,并用PHP下载到服务器端,一个是节省硬盘空间,还有就是速度快!哪位知道?请贴出代码

解决方案 »

  1.   

    大文件不可以,小 文件可以。
    时间长了,PHP执行脚本会超时 ,你必须 利用 服务器端命令下载才可以下载大文件http://www.162cm.com/archives/287.html<?php
        $file="铁血.torrent";
        $fp=fopen($file,"rb");
        $data=(readBt($fp));
        /**
       @author renlu xu <[email protected]>
        输出读入的数组。
        */
        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);
     
     
    ?>