我不明白为什么从变量中减去当前时间的结果 $_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 ?!
2条答案
按热度按时间ha5z0ras1#
这个
$_session['now']
变量设置在回音之前的行中。在回显线路中,将当前时间与之前线路中设置的时间进行比较。因为这两行都是在彼此之后直接执行的,所以这两行都是在同一秒内执行的。将有毫秒的差异,但是
time()
功能以秒为单位,请参阅:https://www.php.net/manual/en/function.time.php.这就是为什么两个时间戳是相同的,并且在比较它们时它们之间没有区别。
xzv2uavs2#
time()
精度为1秒,基本上是:这种情况发生得非常快,因此输出(几乎总是)为零。
示例代码涉及“会话”这一事实暗示您希望测量不同http请求之间的时间。如果是这种情况,则需要一些逻辑来仅在第一次设置存储值,而不在此后设置存储值。