首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > perl python >

友情提醒,想用perl来上传的兄弟可以打消这个念头了【附上测试代码】,该怎么处理

2012-02-03 
友情提醒,想用perl来上传的兄弟可以打消这个念头了【附上测试代码】在下在chinaunix贴了这个帖子,目前还没有

友情提醒,想用perl来上传的兄弟可以打消这个念头了【附上测试代码】
在下在chinaunix贴了这个帖子,目前还没有得到解决,转到这里,看看能不能东方不亮西方亮吧。若能解决(包括但不限于被阁下直接解决,受阁下提示在下自行解决),重谢200分!  

:-)


perl的垃圾回收机制简直是不堪忍受,undef根本释放不了内存

选perl来上传真是我最近做的最大的错误决定了。

本指望mod_perl会有效提高处理的并发数量,没成想一会儿内存就到90%了。

还望有意采用perl上传的兄弟引以为戒啊。  

看来我得把它改为PHP的了,唉。

由于我对perl的了解不深,如果我说的有错误,还请指教。

系统   Linux   cent   os
perl版本   5.8.5
CGI版本
$CGI::revision   =   '$Id:   CGI.pm,v   1.227   2007/02/23   23:03:16   lstein   Exp   $ ';
$CGI::VERSION= '3.27 ';
附上代码

upload.html


<HTML>
<HEAD>
    <TITLE>   upload   </TITLE>
</HEAD>
<BODY>
    <form   enctype= "multipart/form-data "   method= "post "   action= "http://localhost/perl/upload2.cgi ">
    <input   type= "file "   name= "uploadname "     />
    <input   type= "submit "   value= "submit "   />
    </form>
</BODY>
</HTML>


upload2.cgi


BEGIN{
                $ENV{TMPDIR}                                                                                                 =   $ENV{DOCUMENT_ROOT}. "/uploading ";                 #设置上传中的临时目录,此目录需每日清理
}


#use   mydebug;
#printEnv();
#use   CGI::Carp   'fatalsToBrowser ';
#use   Data::Dumper;


my   ($cwd)   =   ($ENV{SCRIPT_FILENAME}   =~   m!^(.+)/.*?$!);
chdir   $cwd;

use   strict;
use   CGI;
use   CGI   qw/:standard/;

$CGI::POST_MAX   =   1024   *   1024   *   300;     #   max   300MB   posts

if($ENV{REQUEST_METHOD}   =~   /post/i)
{
                process_upload();
}
else
{
                fatal_error( "Error   Request ");
}


sub   fatal_error
{
                close(STDIN);
        print   "Content-type:   text/html;charset=gbk\n\n ";
                print   "发生错误: ".shift(@_);
                print   " <a   href= ' ".$ENV{HTTP_REFERER}. " '> 返回 </a> ";
                exit   0;
}

sub   process_upload()
{
                my   $query   =   CGI-> new();
                my   $upload_filehandle                 =   $query-> upload( 'uploadname ');
                                undef   $upload_filehandle;


                                undef   $query;
                                fatal_error(     "上传完毕 "   );  
}

#__END__;


[解决办法]
加上 close $upload_filehandle 如何?
mod_perl不行的话,能否换成fastcgi ?我以前用过fastcgi,不过没有使用CGI模块.完全自己解析HTTP的,所以没有遇到内存问题.

热点排行