公司部署一台上传服务器让公司的同事上传文件,限制文件100m以内,服务器是普通的内存2G PC机。在测试的时候发现,如果上传100m左右的文件,上传几个之后,内存使用率急剧上升,最后导致down机,web页面用普通的form提交,请问问题是出在哪里?

解决方案 »

  1.   

    检查一下php.ini配置文件中下列参数设置是否恰当:
    upload_max_filesize
    memory_limit
    max_execution_time
    max_input_time
    post_max_size另外,上传这么大的文件最好不要用表单post,最好改用ftp.
      

  2.   

    看看你的php配置文件本来文件的copy是最占cpu的
      

  3.   

    同意。这么大的文件,最好不要用http方式上传。最好用FTP或别的方式。
      

  4.   

    在客户端并且是web上面,如何能通过FTP上传??在网上看到这个这个帖子:这个只是使用于一台PHP服务器传到另外一台。不可能在page上运行PHP脚本吧

    二、利用FTP功能进行文件上传    
        这段代码同样分为两个文件,一个为upload.php,一个是ftp.php。    
       
       
      设置ftp的相关选项及选择上传文件名:upload.php   代码如下:    
       
       
      --------------------------------------------------------------------------------    
       
        <?php    
       
        $username=\"用户名\";    
       
        $password=\"用户密码\";    
       
        $server=\"主机名\";    
       
        $cdir=\"上传目录名\"   ;    
       
      //以上设置你的FTP主机名、用户名和用户密码    
       
        ?>    
       
      <!--   文件上传设置标签   -->    
       
        <form   enctype=\"multipart/form-data\"   action=ftp.php   method=post>    
       
      <!--   传递变量   -->    
       
          <input   type=hidden   name=username   value=<?   echo   $username;   ?>>    
       
          <input   type=hidden   name=password   value=<?   echo   $password;   ?>>    
       
          <input   type=hidden   name=server   value=<?   echo   $server;   ?>>    
       
          <input   type=hidden   name=cdir   value=<?   echo   $cdir;   ?>>    
       
        <table>    
       
        <tr>    
       
          <td>上传文件选择    
       
          <input   type=file   name=upfile>    
       
          </td>    
       
        </tr>    
       
        <tr>    
       
          <td>    
       
      <!--   提交表单   -->    
       
          <input   type=submit   name=action   value=上传>    
       
          </td>    
       
        </tr>    
       
        </table>    
       
        </form>    
       
       
      --------------------------------------------------------------------------------    
       
       
      处理上传文件:ftp.php   代码如下:    
       
       
      --------------------------------------------------------------------------------    
       
        <?php    
       
      //ftp联接主机函数    
       
        function   connect()    
       
        {    
       
        global   $server,   $username,   $password;    
       
        $conn   =   ftp_connect($server);    
       
        ftp_login($conn,   $username,   $password);    
       
        return   $conn;    
       
        }    
       
      //建立ftp联接    
       
        $result   =   connect();    
       
        if   ($action   ==   \"上传\")    
       
        {    
       
      //用来改变ftp路径    
       
        ftp_chdir($result,   $cdir);    
       
      //用来上传指定的文件,同名并以二进制位传递    
       
        $res_code   =   ftp_put($result,   $upfile_name,   $upfile,   FTP_BINARY);    
       
      //   判断是否正确上传    
       
        if   ($res_code   ==   1)    
       
      echo   \"上传成功!\";    
       
        else    
       
      echo   \"上传错误!\";    
       
        }    
       
      //   关闭联接    
       
        ftp_quit($result);    
       
        ?>     
      

  5.   

    我觉得http上传文件是先整个文件读进内存的吧,所以才会耗内存。
      

  6.   

    是啊,使用内存查看器会发现出现很多临时文件,php上传以后没有释放内存导致的,需要完善代码