PHP运行不超时的解决方法
黄舟
黄舟 2017-04-11 10:33:57
[PHP讨论组]

在做一些数据量可控的后台服务时,偶尔会出现501 504等服务端进程跑死或者数据库执行超过默认120s的情况,
有一种解决建议是
设置

ini_set('max_execution_time', '0');

这种写法类似于独占服务器资源,有一定隐患,有使用经验的出来讨论下。

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

全部回复(4)
大家讲道理

不知道你是怎么跑这块PHP的,需求是什么?是否实时?是否可异步?

如果不要求实时的话

简单处理的话,使用redis队列,把msg_datamsg_type,写入队列。服务器写一个7*24的服务,检测redis队列,处理并返回。

这个服务一般用go不用php写(相比较于gophp的内存管理和设计初衷都不是为了跑这种长期执行的task

另外因为使用了redis队列,开启适当的线程数(一次最多并发几条msg),可以防止服务器资源的过度占用,或者某时段并发太多导致崩溃。

如果要求实时调用的话

这个我的话没什么经验:
一般也就能多使用缓存,优化逻辑,减少资源占用...

怪我咯

改成离线计算==,一般不允许出现这么大的延时吧

PHP中文网

嗯 这种肯定不是在线的。我这种情况是指后台空闲服务的场景,比如凌晨计算等

迷茫

set_time_limit(0)设置程序结束时间,值为0表示永不超时

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

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