2017-06-15 2 views
1

私は壁にぶつかって、私のGoogleのスキルは私に失敗しました。私は頻繁に使用する一連のPerlスクリプトのために便利なフロントエンドを作成するためにmojoliciousを学んでいます。私はそれを通って長い道のりがあるが、ファイルの総数が950に達すると、(複数の)ファイルのアップロードに困惑している。多数のファイルでmojoliciousが複数のファイルをアップロードすると失敗する

以前は、複数のファイルのアップロードでファイルが始まるファイルサイズが16MBに達すると、アップロードは停止しました。 $ 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も空であるように見えます。誰かが私に解決策を導くためのアイデアや指針を持っていれば、私は非常に感謝しています!

+3

Mojoliciousアプリをラップする別のサーバーはありますか?そのサーバーにはリクエストサイズの上限がありますが、これは変更することもできないこともあります。 [ここにnginxの例があります](https://www.cyberciti.biz/faq/linux-unix-bsd-nginx-413-request-entity-too-large/)。 – mob

+1

4.99 GBのアップロードをいくつ処理できますか? –

+0

@mobヒントありがとうございます - mojoはhypnotoadというサーバーを使用できますが、それが私の場合は他のインスタンスとして使用されているように初期化されているかどうかわかりませんが、特に宣言されているようです。私はこれを探るつもりです - ありがとう。 – user1597452

答えて

1

私は949個のファイルをアップロードしようとすると、私の配列@fileNamesが正しく装着されていますが、私は950個のファイルをアップロードしようとした場合、私の配列は空終わる、と$filesも空であるかのように思えます。

つまり、ファイル記述子が不足しています。具体的には、Linuxカーネルのデフォルトは1024次のとおりです。たとえば

、ファイル記述子の最大数(ulimit -n)されたため、カーネルのデフォルト1024/1024(ソフト、ハード)、およびLinux 2.6に1024/4096に上昇しました.39。

関連する問題