php页面最大执行时间 set_time_limit函数不起作用

举报
lxw1844912514 发表于 2022/03/27 04:01:11 2022/03/27
【摘要】   作者: default|标签: PHP set_time_limit 执行时间|2017-3-21 15:03   set_time_limi...
 
作者: default|标签: PHP set_time_limit 执行时间|2017-3-21 15:03
 
set_time_limit 不生效或者无效解决方法

     
  1. <?php
  2. global $begin;
  3. global $end;
  4. $begin = microtime(TRUE);
  5. try {
  6. $dsn = "mysql:host=localhost;dbname=kaixin";
  7. $db = new PDO($dsn, 'root', '111');
  8. $db->exec("set names 'utf8'");//默认编码
  9. $db->setAttribute(PDO_ATTR_ERRMODE, PDO_ERRMODE_EXCEPTION);
  10. for($i=1; $i<5000; $i++){
  11. $sql = "insert into `article` (`title`, `content`, `time`, `author`, `ip`) value ('文章标题".$i."', '内容".$i."',
  12. '1227237892','kaixin','127.0.0.1')";
  13. $db->exec($sql);
  14. }
  15. $end = microtime(TRUE);
  16. // by bbs.it-home.org
  17. $time = $end-$begin;
  18. echo "执行了".$time."s";
  19. } catch (Exception $e) {
  20. echo "Failed: " . $e->getMessage();
  21. }
  22. ?>

 

 

执行这段代码,只能插入大概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循环里。


    
  1. <?php
  2. ...
  3. for($i=1; $i<5000; $i++){
  4. set_time_limit(0);
  5. $sql = "insert into `article` (`title`, `content`, `time`, `author`, `ip`) value ('文章标题".$i."', '内容".$i."',
  6. <?php
  7. set_time_limit(0);
  8. global $begin;
  9. global $end;
  10. $begin = microtime(TRUE);
  11. ...
  12. ?>
  13. '1227237892','kaixin','127.0.0.1')";
  14. $db->exec($sql);
  15. }
  16. ...
  17. ?>

 

 

也没有起作用。最后在网上查到,有人说,“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多秒时间。

以上就是php页面最大执行时间 set_time_limit函数不起作用 的内容,更多相关内容请关注PHP中文网

文章来源: blog.csdn.net,作者:lxw1844912514,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/lxw1844912514/article/details/100028274

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。