问题很简单,我想检查数据库以向网站访问者提供定制内容,但如果此功能需要 800 毫秒以上的时间执行,则故障转移并提供通用页面。(服务器响应的目标时间是 1000 毫秒)。
我见过set_time_limit函数,但是它以秒为单位的整数作为参数。
我的问题:是否有类似的东西可以用于小于 1 秒的值?
我正在寻找类似的东西:
void set_time_limit_ms ( int $milliseconds )
set_time_limit_ms (800)
问题很简单,我想检查数据库以向网站访问者提供定制内容,但如果此功能需要 800 毫秒以上的时间执行,则故障转移并提供通用页面。(服务器响应的目标时间是 1000 毫秒)。
我见过set_time_limit函数,但是它以秒为单位的整数作为参数。
我的问题:是否有类似的东西可以用于小于 1 秒的值?
我正在寻找类似的东西:
void set_time_limit_ms ( int $milliseconds )
set_time_limit_ms (800)
不存在。你可以用一个刻度函数来模拟它:
declare(ticks=1); // or more if 1 takes too much time
$start = microtime(1);
register_tick_function(function () use ($start) {
(microtime(1) - $start < 0.8) or die();
});
您将无法使用此功能来防止运行时间超过您预期的查询。这仅测量实际脚本执行时间。这是手册中的一些内容。
set_time_limit() 函数和配置指令 max_execution_time 只影响脚本本身的执行时间。在确定脚本运行的最长时间时,不包括在脚本执行之外发生的活动所花费的任何时间,例如使用 system() 的系统调用、流操作、数据库查询等。在测量时间是真实的 Windows 上,情况并非如此。
是的,我经常使用 microtime。看
http://php.net/manual/en/function.microtime.php
<?php
$time_start = microtime(true);
// Sleep for a while
usleep(100);
$time_end = microtime(true);
$time = $time_end - $time_start;
echo "Did nothing in $time seconds\n";
?>