max_execution_time only affect the execution time of the script itself.
Any time spent on activity that happens outside the execution of the script
such as system calls using system(), stream operations, database queries, etc.
is not included when determining the maximum time that the script has been running.
This is not true on Windows where the measured time is real.
这通过测试得到证实:
不会超时
<?php
set_time_limit(5);
$sql = mysqli_connect('localhost','root','root','mysql');
$query = "SELECT SLEEP(10) FROM mysql.user;";
$sql->query($query) or die($query.'<br />'.$sql->error);
echo "You got the page";
会超时
<?php
set_time_limit(5);
while (true) {
// do nothing
}
echo "You got the page";
我们的问题是,我们真的希望 PHP 超时,不管它在做什么,在给定的时间后(因为如果我们知道我们没有以可接受的数量交付页面,我们不想让资源保持忙碌)时间,比如 10 秒)。我们知道我们可以为 SQL 查询设置诸如MySQL wait_timeout之类的设置,但页面超时将取决于执行的查询数量。
有些人试图提出解决方法,但似乎无法实施。
问:有没有一种简单的方法可以PHP max_execution_time
在 linux 上获得一个真实的,或者我们是否在其他地方更好地计时,例如Apache
水平?