|
用PHP处理大量的数据时, 因为PHP对脚本运行时间是有限制的, 一般是30秒, 超过了30秒会运行超时, 在php.ini中可以修改设置. 也可以用set_time_limit(0)设置, 0表示不限时间.
这种方法对于时间不是太长还好, 如果运行时间要几个小时, 这对服务器是一个很大的负担, 并且你不知道程序运行情况如何.
于是, 想到可以把PHP执行进行分步, 一次只执行处理几条数据. 再处理下一步的数据.
下面是一个例子. 有10000条数据, 要修改其中某些数据, 运用PHP分步执行处理, 代码如下:
action.php- <?php
- $stid = isset($_GET['stid'])?$_GET['stid']:0;
- $endid = $stid + 100;
- $maxid = 10000;
- function dosomething(){
- //要时间比较多的操作
- ……
- }
- $sql_string=”select * from `table` where id>’$stid’ and id<=’$endid’ order by id”;
- $datas = getdata_bysql($sql_string);
- foreach($datas as $data){
- //处理数据
- …..
- echo $id.” 处理完成.
- ”;
- if($id>=$maxid){exit;}
- }
- if($stid<=$maxid){
- $stid = $stid + 100;
- $url=”action.php?stid=$stid”;
- echo $url;
- echo ‘<script language=”javascript”>location=”‘.$url.’”; </script>’;
- }
- ?>
复制代码 其中的dosomething()是一个耗时操作. 这里我们通过限制id范围来减少运行时间, 运行完后通过javascript的跳转来自动运行下一步.
这样, 每处理一批数据就可以知道结果, 如果中断也知道问题出在那里
|
|