- 论坛徽章:
- 0
|
最后总结: 不要用mod_perl来做上传,OVER。改为cgi模式的,一切OK了,阿门!
perl的垃圾回收机制简直是不堪忍受,undef根本释放不了内存
选perl来上传真是我最近做的最大的错误决定了。
本指望mod_perl会有效提高处理的并发数量,没成想一会儿内存就到90%了。
还望有意采用perl上传的兄弟引以为戒啊。
看来我得把它改为PHP的了,唉。
由于我对perl的了解不深,如果我说的有错误,还请指教。
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__;
复制代码
[ 本帖最后由 gudai 于 2007-8-14 14:24 编辑 ] |
|