大量文件

时间:2017-06-15 18:34:09

标签: perl file-upload mojolicious mojolicious-lite

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

1 个答案:

答案 0 :(得分:1)

  

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

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

  

例如,最大文件描述符数(ulimit -n)的内核默认值为1024/1024(软,硬),并且已在Linux 2.6.39中提升为1024/4096