我可以为特定的PHP脚本增加Apache的TimeOut指令吗?

时间:2018-04-02 13:41:54

标签: php apache

我有一个PHP脚本,将由应用程序管理员的请求执行。它做了很多东西,至少需要20分钟(取决于数据库大小)

Apache TimeOut指令设置为300(5分钟),如果执行的时间较长,则在PHP脚本完成后关闭连接并返回500状态代码

enter image description here

为此脚本长时间设置PHP ini max_execution_time是没用的。

<?php
// long script
ini_set("max_execution_time", 3600);// 1 hour
// Apache still responses with the same "Connection: close" header and 500 status code

而且我不想仅为这几个脚本更改整个Apache TimeOut指令,因为如果我这样做,任何请求都可能需要很长时间才能成为DDOS的范围漏洞,这是对的吗?

有没有办法让这个脚本只在Apache级别运行更长时间?

1 个答案:

答案 0 :(得分:2)

您是否尝试过PHP的set_time_limit()方法?

https://www.php.net/manual/en/function.set-time-limit.php

除了设置初始执行时间外,手册还说调用它会将调用时花费的时间重置为零,然后将计数器重新启动到提供的限制。

因此,如果您希望确定的话,可以在整个脚本中定期调用set_time_limit(0)(0 ==无限制),以确保您从未遇到限制(即使您设置了输入0即可获得无限的限制。