程序大概如下
...
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没有问题怎么解决啊

解决方案 »

  1.   

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

  2.   

    这样子的话ob_get_contents()不就叠加了
      

  3.   

    Too many open files 是打开文件太多
    你应考虑换个思路,而不是 include
      

  4.   

    建议你查一下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();
    };
      

  5.   

    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)
      

  6.   

    在 include template($value['filename']);
    中 template 函数的作用是什么?仅仅就是返回一个真实的文件名吗?
    如果是,那么静态的写法就是
    include 'xxx.php';是这样吗?如果是,就可以改成
    eval('?>'. file_get_contents( template($value['filename'])) );
      

  7.   

    php 版本? 5.2.6? 
    可能是php的bug试试把include改为include_oncehttp://bugs.php.net/bug.php?id=45133
      

  8.   

    include_once 不会行的 要看看你$value['file'] 模板文件多不多. 如果不多,完全可以缓存起来,用eval 执行.这样虽然不太安全.. 还有你可以分批次搞啊.
      

  9.   

    师傅!弄出来没有!我也是
     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>";
    }