我已经撞墙了,我的谷歌技能这次失败了。我正在学习mojolicious,为我经常使用的一系列Perl脚本创建一个有用的前端。我已经有很长的路要走,但是当文件总数达到950时,我很难收到(多个)文件上传。
以前,我遇到了多个文件上传文件开始上传的问题,但一旦文件大小达到16 MB,上传就停止了。我通过设置$ ENV {MOJO_MAX_MESSAGE_SIZE} = 50000000000来修复此问题。但是,这个问题是不同的。为了说明,这是我尝试获取上传文件的脚本的一部分:
my $files = $self->req->every_upload('localfiles');
for my $file ( @{$files} ) {
my $fileName = $file->filename =~ s/[^\w\d\.]+/_/gr;
$file->move_to("temporary_uploads/$fileName");
$self->app->log->debug("$fileName uploaded\n");
push @fileNames, $fileName;
};
say "FILES: ".scalar(@fileNames);
我很抱歉它可能很难看。如果我尝试上传949个文件,我的数组@fileNames会正确填充,但如果我尝试上传950个文件,我的数组最终会变空,似乎$ files也是空的。如果有人有任何想法或指示指导我解决方案,我将非常感激!
答案 0 :(得分:1)
如果我尝试上传949个文件,我的数组
@fileNames
会正确填充,但是如果我尝试上传950个文件,我的数组会变空,看起来好像$files
也是空的
这意味着该过程的文件描述符用完了。特别是,Linux内核的默认值为1024:
例如,最大文件描述符数(
ulimit -n
)的内核默认值为1024/1024
(软,硬),并且已在Linux 2.6.39中提升为1024/4096
。