讨论,在每次http请求结束后调用set_time_limit(0)

ichynul

问题描述

php.ini中max_execution_time的值对cli环境无效,但可以在程序中是可以被修改并生效的,如set_time_limit()方法。
正常来讲,没有人明知是cli环境的情况下,写代码时去修改这个值,但webman承接传统的php生态,难免某个第三方包会去修改它,或者一些老项目代码迁移有遗留。
而且这个问题不好排查,比如我遇到问题是某个上传文件的地方set_time_limit(),你必须调用过这个上传文件的接口才会触发此问题,过一段时间进程就自动退出重启。
在每次请求结束后调用一次set_time_limit(0),应该对性能影响不大吧。

543 1 0
1个回答

walkor

框架就不加 set_time_limit(0) 这个了。
如果出现Maximum execution time类似的报错,直接代码里搜下 set_time_limit 去掉,或者自己在请求结束后调用下set_time_limit(0)就好了。

  • ichynul 2022-10-28

    直接修改代码不好,万一是composer的包,修改了升级又恢复,只能弄个中间件处理一下了

年代过于久远,无法发表回答
🔝