这两个时间函数中哪一个更好?
我的网站上有一个表格,每微秒或更短时间就有数千名用户提交,因此,我的服务器上同时有数千个请求。
所以我想使用一个在执行时不使用任何睡眠的。此外,$_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']将为您提供请求开始的时间戳。它将根据用户提出请求的时间而变化。