php中time()函数的混淆

lndjwyie  于 2021-10-10  发布在  Java
关注(0)|答案(2)|浏览(225)

我不明白为什么从变量中减去当前时间的结果 $_session['now'] 包括上一次的时间为零。
我希望输出当前时间和创建变量时的时间之间的差异 $student->now . 请给我解释一下。

class Student
{

    public function __set($key, $value)
    {
        $_SESSION[$key] = $value ;
    }

    public function __get($key)
    {
        return $_SESSION[$key];

    }

}
session_start();

$student = new Student() ;

//__set function will be called ;
$student->now = time();

//__get function will be called ;
echo time() - $_SESSION["now"]; // output is zero ?!
ha5z0ras

ha5z0ras1#

这个 $_session['now'] 变量设置在回音之前的行中。在回显线路中,将当前时间与之前线路中设置的时间进行比较。
因为这两行都是在彼此之后直接执行的,所以这两行都是在同一秒内执行的。将有毫秒的差异,但是 time() 功能以秒为单位,请参阅:https://www.php.net/manual/en/function.time.php.
这就是为什么两个时间戳是相同的,并且在比较它们时它们之间没有区别。

xzv2uavs

xzv2uavs2#

time() 精度为1秒,基本上是:

$now = time(); // e.g. 1627385278

echo time() - $now; // 1627385278 - 1627385278

这种情况发生得非常快,因此输出(几乎总是)为零。
示例代码涉及“会话”这一事实暗示您希望测量不同http请求之间的时间。如果是这种情况,则需要一些逻辑来仅在第一次设置存储值,而不在此后设置存储值。

相关问题