0

php のネイティブ関数を使用してファイルに書き込む Web アプリケーションがあります。たとえばfopen()fwrite()プロセスの最後にファイルに書き込んだ後、 を実行してファイル ハンドルを閉じますfclose()

Web アプリケーションはexec()shell_exec()いくつかの場所で と を使用して外部プログラムを実行します。

この Web アプリケーションは、ほとんどが Linux サーバーにデプロイされています。最近、実稼働サーバーで、ファイルに書き込むことができず、次のエラーがスローされるという問題に気付きました。

「開いているファイルが多すぎます」

したがって、私の質問は次のとおりです。上記の操作 (ファイルの書き込みと PHP を介した外部コマンドの実行) を実行すると、これが発生し、開いているファイルが多すぎて、現在このエラーが発生している可能性はありますか?

書き込み/読み取り用にファイルハンドルを開いたら、それらを閉じるようにしました。

4

2 に答える 2

0

出来ますか?もちろん。ulimit はプロセスごとの制限であるため、可能性もあります。

コードを実行できないフローの問題がある可能性がありますfclose(例外や else ブロックなど)。

デバッグを行います。fopen() でカウンターをインクリメントし、fclose() でカウンターをデクリメントするような基本的なことでさえ、わかります。

于 2012-11-15T06:47:10.863 に答える
0

It is because you are exceeding the default number of open files. You can increase the maximum number of open files using ulimit. Check this for more details.

于 2012-11-15T06:35:40.237 に答える