时间:2021-07-01 10:21:17 帮助过:62人阅读
ob_start (); $temp = ob_get_contents (); ob_end_clean ();
不知道你的具体代码,不好说什么
需要及时释放工作变量,可将工作放在函数中执行,以利用 php 自己的回收机制
自己释放变量时需注意的是数组占用的内存是只增不减的,所以要注意数组的复用
我在生成HTML文件时,由于数据量较大,无数次的 fopen fwrite fclose,文件还没生成完呢,就提示内存超出。
我的HTML生成方式是,读入缓存,再写入文件
ob_start (); $temp = ob_get_contents (); ob_end_clean ();
那你加个循环控制量就是了
PHP生成HTML,怎样才能让他内存不超出,求代码
周末休息没人回答了
我在生成HTML文件时,由于数据量较大,无数次的 fopen fwrite fclose,文件还没生成完呢,就提示内存超出。
我的HTML生成方式是,读入缓存,再写入文件
ob_start (); $temp = ob_get_contents (); ob_end_clean ();
$p = $_GET['p'] * 100;for($i=$p; $i<$p+100; $i++){ echo $i; echo '
'; // ..... // 执行其他操作}sleep(1);?>
思路就是把大任务分批执行
用分页读取的方式。
加:register_shutdown_function
每页写完,自动header location到下一页。
用register_shutdown_function 的话,只要你打开了第一次,就可以关闭浏览器了,它会自动执行。
数据的最后一页写完了,要执行:die();
这种情况要分批执行,上个代码,你马上就明白其中的原理了
$total = 10;$s = 0;if (isset ( $_GET ['s'] )) { $s = &$_GET ['s'];}$per = $s + 5; // 每次循环5条if ($per > $total) { // 如果下次循环会超过总数,就让他只能循环到总数 $per = &$total;}while ( $s < $per ) { echo ++ $s; echo '
';}echo '
';echo $s;if ($s < $total) { echo "";}