使用什么?time()函数或$_SERVER[';REQUEST_time';]?哪个更好


What to use ? time() function or $_SERVER['REQUEST_TIME'] ? Which is better?

这两个时间函数中哪一个更好?

我的网站上有一个表格,每微秒或更短时间就有数千名用户提交,因此,我的服务器上同时有数千个请求。

所以我想使用一个在执行时不使用任何睡眠的。此外,$_SERVER['REQUEST_TIME']time()有多独特?两者每微秒都会改变吗?

每次提交表单时,$_SERVER['REQUEST_TIME']是否会更改?比如,time()函数会在每个时间差时发生变化。

我需要给用户一个唯一的url进行验证,在其中添加从两个中的任何一个生成的唯一结果?另外,使用microtime()会让PHP休眠吗?不是吗?

这取决于情况。

$_SERVER['REQUEST_TIME']对应于请求开始的时间,web服务器提供该数据。

time()实际上运行了一个系统调用,以检查调用此行的时间。

你需要更具体地说明你想做什么,这样我们才能给你完整的答案。

time()每秒更改一次。microtime()(可选地,与(true)一起)更频繁。

$_SERVER['REQUEST_TIME']是在PHP进程启动时设置的,但它只是一个简单的变量查找,因此速度更快(PHP 5.1;2005年11月)。

大多数时候,你不需要微秒的分辨率,尤其是如果生成网页的过程只运行了几分之一秒。

$_SERVER['REQUEST_TIME_FLOAT']是请求开始的时间戳,精度为微秒(PHP 5.4;2012年3月)。

来自php.net:

$_SERVER['REQUEST_TIME_FLOAT'];
请求开始的时间戳,精度为微秒。

http://php.net/manual/en/reserved.variables.server.php(不过要小心,请参阅Alister关于使用REQUEST_TIME的说明)

$_SERVER['REQUEST_TIME']表示会话启动的时间,它与使用time()microtime()完全不同,因为它对于该运行是恒定的。

您应该考虑基于microtime()的毫秒

$milliseconds = round(microtime(true) * 1000);

如果验证需要唯一,则应使用time()、microtime()或uniqid()。

问题是,为什么你需要时间来变得独一无二?

编辑:因为你编辑了你的问题。

$_SERVER['REQUEST_TIME']将为您提供请求开始的时间戳。它将根据用户提出请求的时间而变化。