【问题标题】:how do I find the php session start timestamp我如何找到 php 会话开始时间戳
【发布时间】:2012-05-11 10:49:52
【问题描述】:

我记得最近在某处读到过,您可以以时间戳格式获取服务器会话开始时间,该时间戳格式与用户开始 php 会话的确切时间相同,但我再也找不到这篇文章了。

我不想要的是请求时间(即'REQUEST_TIME' 的时间)或执行date() 时的“当前时间戳”,因为(如果我理解正确的话)它们会针对每个请求和每个脚本执行。

我想要的是在服务器上发起会话的时间,这在逻辑上只能是一个时刻。

显然是在检索此信息。

有人可以帮忙吗?

【问题讨论】:

  • 如果您在互联网上发现了一些有用的东西,您应该做一个书签或博客。这样以后再找起来就容易了。
  • 我知道我知道。当时我没觉得它那么有趣……不过它一定是种下了种子,现在我付出了代价。

标签: php session timestamp global-variables


【解决方案1】:

有什么问题:

if (!isset($_SESSION['started'])) {
    $_SESSION['started'] = $_SERVER['REQUEST_TIME'];
}

【讨论】:

  • 如果我理解正确,这是最后一个 http 请求的请求时间。例如,如果用户导航到多个页面,它将捕获最后一次导航的请求时间。如果我错了,请纠正我。
  • @T9b:你错了。时间只设置一次 - 当 $_SESSION['started'] 未设置时。然后设置时,它是不变的,所以总是开始时间。
  • 对不起,我没有考虑条件语句。但是我的问题是会话何时在服务器上启动,而不是请求何时在客户端开始。从理论上讲,http 请求开始时间在逻辑上是在会话开始之前。我所追求的是服务器交付的时间,而不是客户端。
  • 你可以把$_SERVER['REQUEST_TIME']改成time()我不知道@hekre为什么改了我的答案也许他能解释一下:)
  • 当然 ;) - 两者实际上或多或少相同,但是,time() 需要一个函数调用并返回 current 时间,而 $_SERVER['REQUEST_TIME'] 返回请求时间,也就是 PHP 开始的时候(并且不是函数调用),见php.net/manual/function.time.php
【解决方案2】:
if (!isset($_SESSION['start_time']))
{
    $str_time = time();
    $_SESSION['start_time'] = $str_time;
}

echo $_SESSION['start_time'];

【讨论】:

    【解决方案3】:

    如果你想要一个最短的答案

    $_SESSION['started'] = (!isset($_SESSION['started'] ? time() : $_SESSION['started']);
    

    【讨论】:

    • 或更短的$_SESSION['start']=@$_SESSION['start']?:time(); in PHP7+
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-26
    • 2018-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多