3

问题很简单,我想检查数据库以向网站访问者提供定制内容,但如果此功能需要 800 毫秒以上的时间执行,则故障转移并提供通用页面。(服务器响应的目标时间是 1000 毫秒)。

我见过set_time_limit函数,但是它以秒为单位的整数作为参数。

我的问题:是否有类似的东西可以用于小于 1 秒的值?

我正在寻找类似的东西:

void set_time_limit_ms ( int $milliseconds )

set_time_limit_ms (800)
4

3 回答 3

3

不存在。你可以用一个刻度函数来模拟它:

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();
});
于 2013-07-25T21:51:54.670 回答
1

您将无法使用此功能来防止运行时间超过您预期的查询。这仅测量实际脚本执行时间。这是手册中的一些内容。

set_time_limit() 函数和配置指令 max_execution_time 只影响脚本本身的执行时间。在确定脚本运行的最长时间时,不包括在脚本执行之外发生的活动所花费的任何时间,例如使用 system() 的系统调用、流操作、数据库查询等。在测量时间是真实的 Windows 上,情况并非如此。

于 2013-07-25T21:54:06.323 回答
0

是的,我经常使用 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";
?>
于 2013-07-25T21:52:04.223 回答