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没有问题怎么解决啊 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 ob_start();foreach($arr as $value){ include template($value['filename']); $message = addslashes(trim(ob_get_contents()));};ob_end_clean(); 这样子的话ob_get_contents()不就叠加了 Too many open files 是打开文件太多你应考虑换个思路,而不是 include 建议你查一下ob_start和ob_end_clean()、ob_get_contents()的用法,理解清楚了就知道怎么回事了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;$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) 在 include template($value['filename']);中 template 函数的作用是什么?仅仅就是返回一个真实的文件名吗?如果是,那么静态的写法就是include 'xxx.php';是这样吗?如果是,就可以改成eval('?>'. file_get_contents( template($value['filename'])) ); php 版本? 5.2.6? 可能是php的bug试试把include改为include_oncehttp://bugs.php.net/bug.php?id=45133 include_once 不会行的 要看看你$value['file'] 模板文件多不多. 如果不多,完全可以缓存起来,用eval 执行.这样虽然不太安全.. 还有你可以分批次搞啊. 师傅!弄出来没有!我也是 foreach($_POST['singlePage'] as $key=>$value){ //以POST方法中的数组做循环,输出键和值 $url2=$dirName.$value; $fileName = $staticPage->getStaticPageName($dirName.$value, 'html' ); ob_start(); echo include($url2); $content = ob_get_contents(); ob_end_clean(); $fp = fopen( '../../' . $fileName, 'w'); fwrite($fp, $content); ob_end_flush(); echo "成功生成<font color='red'>".$value."</font>为<font color='red'>".$fileName."</font>"; echo "<br>"; } 新人!!字符串处理的问题。。。 include_path问题 为何日期时间交互在本机可以实现,在其它机器没反映? 是否能做到!!! 初学者请教 有关表单在不同网页传递的问题 phpmyadmin2.8.2中文输入及显示问题 用户名只能为数字、英文、中文及下划线的问题 上传文件时使用数组形式的文本框在程序中怎么处理? 做加入图片的论坛,求数据结构设计与相关功能的实现技术 想学PHP,用什么教材或看什么视频比较好 php表单如何传递0值
foreach($arr as $value){
include template($value['filename']);
$message = addslashes(trim(ob_get_contents()));
};
ob_end_clean();
你应考虑换个思路,而不是 include
foreach($arr as $value){
include template($value['filename']);
$message = addslashes(trim(ob_get_contents()));
ob_end_clean();
};
ob_start();
include template($value['filename']);
$message = addslashes(trim(ob_get_contents()));
ob_end_clean();
}话说你这样是生成静态吗?用请求跳转来分批做啊伪代码演示触发请求:dosomeing.php?page=1&per=1000;$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)
中 template 函数的作用是什么?仅仅就是返回一个真实的文件名吗?
如果是,那么静态的写法就是
include 'xxx.php';是这样吗?如果是,就可以改成
eval('?>'. file_get_contents( template($value['filename'])) );
可能是php的bug试试把include改为include_oncehttp://bugs.php.net/bug.php?id=45133
foreach($_POST['singlePage'] as $key=>$value){ //以POST方法中的数组做循环,输出键和值
$url2=$dirName.$value;
$fileName = $staticPage->getStaticPageName($dirName.$value, 'html' );
ob_start();
echo include($url2);
$content = ob_get_contents();
ob_end_clean();
$fp = fopen( '../../' . $fileName, 'w');
fwrite($fp, $content);
ob_end_flush();
echo "成功生成<font color='red'>".$value."</font>为<font color='red'>".$fileName."</font>";
echo "<br>";
}