偶也想知道copy的原理,,是用http协议的吗??copy()函数是怎么获得数据流的???在传递数据的时候client和server是保持着一个持续的连接吗?

解决方案 »

  1.   

    个人感觉应该是使用http协议
    http作为无记忆状态本身就不适合做大的数据传输
      

  2.   

    上传的关键在于file标签而非copy().在你执行copy()的时候,文件早已经到达服务器上了.
      

  3.   

    copy函数没问题,偶在本地机,上传过70m的电影,速度还可以,并没有侬说的那种奇慢的情况,5个小时那就更用不了了。5个小时偶还不知道能上传几个g呢。
      

  4.   

    LeeMaRS(小菜虎_水壶的仇人) 
    文件早已经到达服务器上了.??
    不是吧,,,只是数据流吧,,,,
    “文件早已经到达服务器上了”应该怎么理解呢?
      

  5.   

    zstao(zstao) 
    如果像 LeeMaRS(小菜虎_水壶的仇人) 说的 
    文件早已经到达服务器上了.那你的问题不就解决了吗?呵呵
    我也仔细想了,应该会到达服务器吧,至少服务器应该有缓存post值的地方,也许可以设置接受缓存的大小,,,猜想而已,呵呵
      

  6.   

    可以使用ftP函数进行上传
      

  7.   

    PHP上传文件的过程是这样的:
    PHP从标准输入(apache给的)中读取POST的数据,
    将其中的文件(<input type=file name=myfile>)保存的临时目录下(一般是/tmp),
    然后生成全局变量:$myfile,$myfile_name,$myfile_size,$myfile_type(假设文件输入框的名字是myfile).
    这个$myfile就是PHP生成的那个临时文件的路径,一般是/tmp/phpXXXXXX,
    $myfile_name 是文件在客户端时的路径,
    $myfile_size 是文件大小
    $myfile_type 是文件类型
    这些都是在你的PHP脚本开始执行前进行的!!!!然后你可以调用cp()或是link()函数把这个临时文件拷贝到你要保存的地方,或者直接打开进行处理都可以,用完后unlink()删除那个临时文件.
      

  8.   

    你所说的速度异常的慢的原因应该不是PHP和HTTP的原因,
    你再找找看,看同样的文件你用FTP需要多长时间正常情况下,在100M网卡和交换机的网络里,上传速度应该达到10M/s的
      

  9.   

    re:dgj在ftp 下速度很快! 
    30M的东西1分钟都不够就搞好了!
    所以,我还是认为是http 上的问题.
    还是本身,程序上的优化呢?!?
    请教...
      

  10.   

    看看你的php.ini里的post_max_size、upload_max_filesize,max_executin_time,
    memory_limit等参数的设置,
    另外你服务器的配置怎么样?建议你使用link而不是copy
      

  11.   

    dgj:
        能具体给个实例来吗?!
       我一直会这事情头痛呢!!!
      

  12.   

    【link】怎么用??高手提醒~~
      

  13.   

    超过2M的话,就感觉应该用FTP了
      

  14.   

    建议把其功能分开来实现 
    用COPY函数本身就是使用HTTP函数 其本身有限制
    不如把文件的描述内容入库与文件上传分离 
    上传用专有的FTP软件(CUTEFTP等) 
    内容入库用PHP代码
      

  15.   

    http问题……
    php不参与所有链接的处理,那是web server的任务,
    一般web server未对上传优化。
     dgj(我是一匹狼) 所说的php对上传的处理是对的……
    http不适合上传大文件,一是上传的文件要被编码,会增加
    长度,上传后的文件需解码后才能保存到暂存目录;
    二是,解码大文件很耗服务器资源。