これが 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 個のファイルを使用します。なぜこれが起こっているのか理解できません。
何か案は?
前もって感謝します、
ヨルダン