linux 下 php set_time_limit 不起作用,关于php页面最大执行时间问题(set_time_limit函数在windows下不起作用......

首先说一下我的运行环境winxp+php5.2.5+apache2.2.8+5.0.27-community-nt

我想测试插入5万条数据到数据库里。

页面如下

4989922_1.gif

4989922_2.gif代码

<?phpglobal $begin;global$end;$begin=microtime(TRUE);try{$dsn="mysql:host=localhost;dbname=kaixin";$db=newPDO($dsn,'root','111');$db->exec("set names 'utf8'");//默认编码$db->setAttribute(PDO_ATTR_ERRMODE,PDO_ERRMODE_EXCEPTION);for($i=1;$i<5000;$i++){$sql="insert into `article` (`title`, `content`, `time`, `author`, `ip`) value ('文章标题".$i."', '内容".$i."',

'1227237892','kaixin','127.0.0.1')";$db->exec($sql);

}$end=microtime(TRUE);$time=$end-$begin;echo"执行了".$time."s";

}catch(Exception$e) {echo"Failed:".$e->getMessage();

}?>

执行这段代码,只能插入大概1000条左右的数据,这样页面就不执行了。

测试页面的执行时间大概都是29秒左右,也就是页面的最大执行时间 是30秒。

知道set_time_limit函数,可以设置页面执行时间。

set_time_limit函数用法如下:

本函式用来设定该页最久执行时间。内定值是 30 秒,在 php.ini 中的 max_execution_time 变数设定,若设定为 0 则不限定最久时间。当执行到该函数时,才开

始计算。例如,若内定是 30 秒,而在执行到该函数前已执行了 25 秒,而用本函式改为 20 秒,则该页面最长执行时间为 45 秒。

我把这个set_time_limit函数加到了程序里,

发现页面执行时间还是29秒左右,没有起作用。

看到网上有人说,php.ini里的safe_mode如果为on,本函数不执行。查了我的php.in里的safe_mode=off。

我又试着把set_time_limit(0);加入到for循环里。

4989922_1.gif

4989922_2.gif代码

'1227237892','kaixin','127.0.0.1')";$db->exec($sql);

}...?>

也 没有起作用。

最后在网上查到,有人说,“set_time_limit函数最好是在linux下执行,windows执行可能也无效”。彻底对这个函数失去信心 了,估计是因为我是windows系统的原因。

只能修改php.ini里的max_execution_time = 30了。这个默认是30秒,我修改为max_execution_time = 300.重新启动apache服务器。

结果执行时间为140秒左右,5000条数据终于插入了。

看来,windows下这个页面执行时间还是在php.ini里控制,修改max_execution_time。

从上面的实例也可以得出,如果用PDO往MYSQL里面插入数据的话。插入五千条大概140多秒时间,插入1万条大概260多秒时间。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值