0

これが PHP/Apache の問題なのか、それともファイルシステムの問題なのかは少し不明です。LDAP サーバーの参照整合性をチェックするスクリプトを書いているので、大量のデータを取得しています。PHP 5.3.8、Apache 2.2.3、CentOS 5.7 を使用しています (これが正しいバージョンだと思います)。

スクリプトを実行すると、次のような PHP 警告が表示されます。

警告: include("fileName"): ストリームを開くことができませんでした: 行 50 の "fileName" で開いているファイルが多すぎます/zend/share/ZendFramework/library:/usr/local/zend/share/pear') 50 行目の「fileName」

含まれるファイルを少なくするために多くのコードを切り取りましたが、違いはないようです。プルしているデータの量が原因である可能性があると考えたので(おそらくスラッシングが原因である可能性があります)、それを制限し、7.5 MBのピークメモリ使用量を出力しました(返される結果を制限した後)。これはまともなチャンクですが、そうではありませんスクリプトを殺すのに十分です。

このすべての最中に、問題をググったところ、ulimit というコマンドで変更できるファイルシステムのオープン ファイル制限が原因である可能性があることがわかりました。デフォルトは 1024 です。私はすべてのユーザーに対して 40000 に設定しました。それでも役に立ちませんでした。私の PHP スクリプトは、削除した後、合計 11 個のファイルを使用します。なぜこれが起こっているのか理解できません。

何か案は?

前もって感謝します、

ヨルダン

4

1 に答える 1

0

そのユーザーのソフト制限とハード制限を変更しましたか? また、これが "apache_user" というユーザーの下で実行されている Apache プロセスである場合は、Apache を停止し、ログオフしてから再度ログインし (ソフト/ハード制限の両方が設定されていることを確認してください)、Apache プロセスを起動する必要があります。

于 2012-08-17T21:29:22.970 に答える