ホームページ >バックエンド開発 >PHPチュートリアル >PHP の include 関数と ob 関数がループ内で発生する問題に対処するにはどうすればよいですか?
ループ内の PHP の include 関数と ob 関数によって引き起こされる
プログラムは、おおよそ次のとおりです。
...
foreach($arr as $value){
ob_start();
include template ($value['filename']);
$message =addslashes(trim(ob_get_contents()));
ob_end_clean();
}
このモードでは 5000 個が実行されます
開いているファイルが多すぎますというエラーが表示されます
実行回数が 1000 回であれば問題ありません
解決方法
---- --解決策--------------------
開いているファイルが多すぎるということは、開いているファイルが多すぎることを意味します
含めるのではなく、考えを変えることを検討する必要があります。
------解決策----------------------
一度、ob_start と ob_end_clean() を確認することをお勧めします。 ob_get_contents() の使用法を理解すると、何が起こっているかがわかります
ob_start(); foreach($arr as $value){ include template($value['filename']); $message = addedlashes(trim(ob_get_contents())); ob_end_clean(); }; <br><font color="#e78608">------解決策---------</font><br>foreach($arr as $value){<br> ob_start();<br> include template($value['filename']);<br> $message =addslashes(trim(ob_get_contents()));<br> ob_end_clean();<br>}<br> <br>ところで、こんな風に静電気を発生させているんですか? <br><br>リクエストジャンプを使用してバッチで実行します<br><br>疑似コードのデモ<br><br>トリガーリクエスト: dosomeing.php?page=1&per=1000;<br><br>
$arr = $data.limit((page-1)*$per, per) foreach($arr as $value){ ob_start(); include template($value['filename']); $message = addedlashes(trim(ob_get_contents())); ob_end_clean(); } $ページ++; header('場所: dosomeing.php?page='.$page.'&per='.$per) <br><font color="#e78608">------解決策---------</font><br>phpのバージョンは? 5.2.6? <br>PHP のバグである可能性があります<br><br>include を include_once に変更してみてください<br><br>http://bugs.php.net/bug.php?id=45133 <div class="clear"></div>