php运行超时采取分步执行的简单方法

发布时间:2020-02-03编辑:脚本学堂
php处理大量的数据时,因为其对脚本运行时间是有限制的,一般是30秒,超过了30秒会运行超时, 在php.ini中可以修改设置。也可以用set_time_limit(0)设置,0表示不限时间。

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.” 处理完成. <br />”;
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的跳转来自动运行下一步。
这样,每处理一批数据就可以知道结果,如果中断也知道问题出在那里。