您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

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

2024/3/9 6:01:58发布18次查看
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 codeob_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

该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product