php set_time_limit不到一秒钟

时间:2013-07-25 21:47:41

标签: php

问题很简单,我想检查一个数据库,为站点访问者提供自定义内容,但如果此函数需要超过800毫秒才能执行故障转移并提供通用页面。 (服务器响应的目标时间是1000毫秒)。

我见过set_time_limit函数,但这需要一个以秒为单位的整数作为参数。

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

我正在寻找类似的东西:

void set_time_limit_ms ( int $milliseconds )

set_time_limit_ms (800)

3 个答案:

答案 0 :(得分: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();
});

答案 1 :(得分:1)

您将无法使用此功能来阻止运行时间超出预期的查询。这仅测量实际的脚本执行时间。这里有一点来自手册。

  

set_time_limit()函数和配置指令   max_execution_time仅影响脚本的执行时间   本身。花在执行之外的活动上的任何时间   使用system(),流操作等系统调用的脚本   确定最大值时不包括数据库查询等   脚本运行的时间。在Windows上不是这样   测量时间是真实的。

答案 2 :(得分: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";
?>