在这篇文章中,我们将探讨允许你增加脚本在被PHP解析器终止前的最大运行时间的不同选项。
什么是PHP中的max_execution_time 指令?
max_execution_time 指令设置了一个脚本在被终止之前允许运行的最大时间。默认值是30秒,你可以根据你的要求增加到一个合理的限度。
很多时候,你会注意到,如果一个脚本执行的时间太长,PHP会抛出著名的超过最大执行时间的错误。
Fatal error: Maximum execution time of 30 seconds exceeded
在大多数情况下,max_execution_time 指令没有被定制,因此它的默认值是30秒,而你可能最终会出现这个错误。
在下一节中,我们将讨论几个不同的方法,可以用来增加max_execution_time 指令的值。
如何在PHP中增加max_execution_time
有几种不同的方法来增加脚本的执行时间。
ini_set 函数
这是最简单的方法之一,你可以用它来增加max_execution_time 指令的值。ini_set 函数是用来改变**php.**ini配置文件中的配置指令的值的。因此,我们可以用它来改变max_execution_time 指令的值。
为了增加脚本的执行时间,你可以在脚本的顶部使用下面的代码段。
ini_set('max_execution_time', '300');
在上面的例子中,它将把max_execution_time 指令设置为300秒。
另一方面,如果你把它设置为0,它将允许脚本无限期地运行。当你行使这个选项时,你必须非常小心,而且不建议在生产中这样做。
php.ini配置文件
如果你想在全局范围内增加max_execution_time 指令的值,你应该选择这个选项。当然,你需要有权限来改变php.ini文件。
继续前进,在你的服务器上找到php.ini文件。如果你不知道怎么做,我在另一篇文章中解释了如何找到php.ini文件。
*
一旦你找到了**php.**ini文件,用你最喜欢的文本编辑器打开它,寻找下面一行。
; Maximum execution time of each script, in seconds
; https://php.net/max-execution-time
; Note: This directive is hardcoded to 0 for the CLI SAPI
max_execution_time = 30
根据你的需要修改它,保存它并重新启动你的Web服务器。
set_time_limit 函数
除了我们在前面的章节中讨论过的ini_set 函数外,还有一个 PHP 函数允许你设置脚本的最大执行时间。set_time_limit 函数允许你设置一个脚本允许运行的秒数。
让我们快速看一下set_time_limit 函数是如何工作的。
set_time_limit(300);
正如你所看到的,set_time_limit 函数只需要一个参数:秒数。如果你把它设置为0,那么一个脚本就可以无限期地运行。
事实上,与max_execution_time 指令相比,set_time_limit 函数的工作方式有些不同。当set_time_limit 函数被调用时,它将把超时计数器重置为零。从那以后,它将测量你用set_time_limit 函数设置的脚本执行时间。
我们假设一个脚本执行了10秒,然后调用set_time_limit 函数,将脚本执行时间设置为30秒。在这种情况下,一个脚本在被终止之前总共会运行40秒。因此,如果你想使用set_time_limit 函数来设置一个脚本的最大执行时间,你应该把它放在你的脚本的顶部。
Apache用户:.htaccess文件
如果你使用Apache服务器来驱动你的网站,它提供了**.htaccess配置文件,它允许你设置php.ini配置指令。在本节中,我们将看到你如何使用.htaccess**文件来设置max_execution_time 指令。
首先,你需要在你的项目中找到**.htaccess文件。在大多数情况下,你应该能够在项目的文档根目录下找到它。如果你在项目根部找不到它,你需要确保它没有被你的文件管理器软件隐藏,因为.htaccess文件名前的点表示它是一个隐藏文件。你可以使用文件管理器中的显示隐藏文件**选项,查看文件根中的所有隐藏文件。如果你仍然找不到它,你需要创建一个。
在你喜欢的文本编辑器中打开**.htaccess**文件,在结尾处添加以下一行。
php_value max_execution_time 300
保存它,你就完成了!
总结
今天,我们讨论了几种不同的方法,可以用来改变PHP中max_execution_time 指令的值。