循环执行一个操作,循环次数太多,执行次数太长导致错误,怎么优化?

php中文网
发布: 2016-06-06 20:50:52
原创
2591人浏览过

代码大概是这样的:

    public function test(){
        for ($i=0; $i < 90260; $i++) { 
            $a = findappbyid($i);
            print_r($a);
            print($i);
        }
    }
登录后复制

大概查10个数据左右,就会出现:
Fatal error: Maximum execution time of 30 seconds exceeded in xxxx

有没有什么比较好的办法让他一边运行一边输出结果(现在是运行完一下子出现数据和上述错误),而不会出现因为运行时间过长产生错误呢?

回复内容:

代码大概是这样的:

    public function test(){
        for ($i=0; $i < 90260; $i++) { 
            $a = findappbyid($i);
            print_r($a);
            print($i);
        }
    }
登录后复制

大概查10个数据左右,就会出现:
Fatal error: Maximum execution time of 30 seconds exceeded in xxxx

有没有什么比较好的办法让他一边运行一边输出结果(现在是运行完一下子出现数据和上述错误),而不会出现因为运行时间过长产生错误呢?

我勒去,这个什么业务逻辑啊!如果 findappbyid 查数据库的话,纯粹是看数据库不爽啊

萝卜简历
萝卜简历

免费在线AI简历制作工具,帮助求职者轻松完成简历制作。

萝卜简历 171
查看详情 萝卜简历

ob_end_flush();
ob_implicit_flush(true);
for ($i=0; $i < 90260; $i++) { 
            $a = findappbyid($i);
            print_r($a);
            print($i);
}
ob_end_flush();
ob_implicit_flush(false);
登录后复制

php的配置里默认的执行时间是30秒,30秒对于一般的也足够了。

你可以在你的程序里添加set_time_limit(3600)临时改变程序的执行时间。
或者ini_set("max_execution_time", "3600")

如果你的是本地测试的机器,也可以将php.ini中的max_execution_time = 30中的30改成3600,或者更大的数,然后重启服务。

可以建立一个阻塞队列,把循环的次数变成队列的长度,单次执行的放到队列的节点中去做

相关标签:
最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号