欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

php的include和ob函数在循环中导致的,该如何处理

程序员文章站 2022-05-21 22:37:49
...
php的include和ob函数在循环中导致的

程序大概如下
...
foreach($arr as $value){
ob_start();
include template($value['filename']);
$message = addslashes(trim(ob_get_contents()));
ob_end_clean();
}

这种模式执行5000条数据 就会出现

Too many open files的错误

如果执行数为1000没有问题

怎么解决啊

------解决方案--------------------
Too many open files 是打开文件太多
你应考虑换个思路,而不是 include
------解决方案--------------------
建议你查一下ob_start和ob_end_clean()、ob_get_contents()的用法,理解清楚了就知道怎么回事了
PHP code

ob_start();
foreach($arr as $value){
  include template($value['filename']);
  $message = addslashes(trim(ob_get_contents()));
  ob_end_clean();
};

------解决方案--------------------
foreach($arr as $value){
ob_start();
include template($value['filename']);
$message = addslashes(trim(ob_get_contents()));
ob_end_clean();
}

话说你这样是生成静态吗?

用请求跳转来分批做啊

伪代码演示

触发请求:dosomeing.php?page=1&per=1000;

PHP code
$arr = $data.limit((page-1)*$per, per)

foreach($arr as $value){
  ob_start();
  include template($value['filename']);
  $message = addslashes(trim(ob_get_contents()));
  ob_end_clean();
}
$page++;
header('Location: dosomeing.php?page='.$page.'&per='.$per)

------解决方案--------------------
php 版本? 5.2.6?
可能是php的bug

试试把include改为include_once

http://bugs.php.net/bug.php?id=45133
php的include和ob函数在循环中导致的,该如何处理

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

相关文章

相关视频