heroku php增加max_execution_time
Posted
技术标签:
【中文标题】heroku php增加max_execution_time【英文标题】:heroku php increase max_execution_time 【发布时间】:2021-04-02 05:11:37 【问题描述】:我在 Heroku 上托管了一个电报机器人。
它需要从网站上抓取一些内容 解析它并向用户发送消息
$params['text'] = getRemoteContent("https://example.com/someData");
$t->send('sendMessage', $params);
但它会在 30 秒后退出
2020-12-23T15:04:54.995957+00:00 app[web.1]: [23-Dec-2020 15:04:54] WARNING: [pool www] child 295, script '/app/index.php' (request: "GET /index.php?q=data&chat_id=000672000") execution timed out (30.626797 sec), terminating
我尝试了 .user.ini,但结果没有变化,30 秒后它仍然退出
max_execution_time = 400
【问题讨论】:
与其增加执行时间,让我们关注一下,如何快速处理内容。 它的远程网站有时加载缓慢,无法控制 这能回答你的问题吗? set_time_limit not working on heroku 【参考方案1】: Heroku 上的 Web 请求有 30 秒的限制。来自他们的Request timeout 文章:Heroku 处理的 Web 请求通过多个 Heroku 路由器定向到您的测功机。这些请求旨在由您的应用程序快速处理。最佳实践是让您的 Web 应用程序的响应时间低于 500 毫秒 [...] 有时 Web 请求可能会挂起或需要过多的时间来处理您的应用程序。发生这种情况时,如果完成时间超过 30 秒,路由器将终止请求。
现在详细介绍并提到一个额外的 55 秒窗口:HTTP timeouts(在他们关于 Limits 的文章中。)
您可能想改用use a one-off dyno 或“worker”:与一次性测功机的连接将在闲置一小时后关闭
【讨论】:
【参考方案2】:更改 php.ini 后尝试重置您的 apache。
换个方式,写
<?
set_time_limit(50);
//your code
这是一种不好的做法,最好编写可以缩短加载时间的代码,例如让进程并行工作。
更新: 我看到你在“heroku”上运行。 从他们的文档中看,如果您必须超过 30 秒的请求超时,您将需要使用后台作业:
https://devcenter.heroku.com/articles/request-timeout
【讨论】:
试过了,没用。请注意,它在 Heroku 环境中以上是关于heroku php增加max_execution_time的主要内容,如果未能解决你的问题,请参考以下文章