热搜:NVER node 开发 php

能用PHP打开BT种子并下载到服务器端吗?

2024-09-20 12:50:01
能用PHP打开BT种子并下载到服务器端吗?

我想把BT文件上传到服务器并用PHP打开BT种子文件,并用PHP下载到服务器端,一个是节省硬盘空间,还有就是速度快!

哪位知道?请贴出代码


回复讨论(解决方案)

大文件不可以,小 文件可以。
时间长了,PHP执行脚本会超时 ,你必须 利用 服务器端命令下载才可以下载大文件

http://www.162cm.com/archives/287.html

<?php    $file="铁血.torrent";    $fp=fopen($file,"rb");    $data=(readBt($fp));    /**   @author renlu xu     输出读入的数组。    */    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     输出读入的数组。    */    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);  ?>