Home  >  Article  >  Backend Development  >  PHP如何获取用户每次操作的HTTP 请求的唯一性的request id 呢?

PHP如何获取用户每次操作的HTTP 请求的唯一性的request id 呢?

WBOY
WBOYOriginal
2016-06-06 20:12:502928browse

PHP如何获取用户每次操作的HTTP 请求的唯一性的request id 呢?
无论多少人,要求每次点击 都是全局唯一的ID

回复内容:

PHP如何获取用户每次操作的HTTP 请求的唯一性的request id 呢?
无论多少人,要求每次点击 都是全局唯一的ID

每次一个请求过来,你都生成唯一的 id,可以作为这个 request 的唯一 id,可以使用 uuid or guid

你好,LZ:
看到你的问题,我首先想到的是主键id的概念, 它可以唯一标识每条记录。所以楼主的需求就是要找到一个递增id,用于标识每一个请求。

<code>方案一:(利用PHP内置全局变量$_SERVER中的参数REQUEST_TIME)

   <?php date_default_timezone_set('PRC');
    
    sleep(5);
    echo date('Y-m-d H:i:s',time()); //获取当前系统的时间戳
    
    echo '<hr/>';
    
    echo date('Y-m-d H:i:s', $_SERVER['REQUEST_TIME']);//获取本次请求的开始时间
</code>

输出结果:

<code>2016-04-05 11:27:06 
2016-04-05 11:27:01  //请求时间,与休眠后输出date相差5秒,符合预期

</code>

注:如果请求量巨大,秒级别无法标识,可以用REQUEST_TIME_FLOAT参数,可以精确到微秒级。

方案二: 利用php内置函数uniqid() ,生成唯一id。 或者这样子来生成: md5(time()).mt_rand(1,1000)

<code><?php echo $_SERVER['REQUEST_TIME_FLOAT'];</code></code>

phpsessid

1,开启session,$sid = session_id();
2.获取当前请求的时间 $rid = $_SERVER['REQUEST_TIME_FLOAT']
3.唯一请求等于 $unqidId = md5($sid . $rid) //(如果还觉得不可靠再加个随机数)

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn