2

我碰壁了,这次我的谷歌技能让我失望了。我正在学习 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 也是空的。如果有人有任何想法或指示来指导我找到解决方案,我将非常感激!

4

1 回答 1

2

如果我尝试上传 949 个文件,我的数组@fileNames会正确填充,但如果我尝试上传 950 个文件,我的数组最终会是空的,而且看起来好像$files也是空的。

这意味着该进程正在用完文件描述符。特别是,Linux 内核的默认值为1024

例如,最大文件描述符ulimit -n1024/10241024/4096

于 2017-06-16T14:15:47.150 回答