ホームページ >バックエンド開発 >PHPチュートリアル >PHP の include 関数と ob 関数がループ内で発生する問題に対処するにはどうすればよいですか?

PHP の include 関数と ob 関数がループ内で発生する問題に対処するにはどうすればよいですか?

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBオリジナル
2016-06-13 13:43:15923ブラウズ

ループ内の 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() の使用法を理解すると、何が起こっているかがわかります

PHP コード

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>
PHP コード
$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>
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。