14

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

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

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

每次我提交表单时,$_SERVER['REQUEST_TIME'] 会改变吗?就像,time() 函数会在每个时间差时发生变化。

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

4

6 回答 6

14

这取决于。

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

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

您需要更具体地说明您想要做什么,以便我们为您提供完整的答案。

于 2012-08-24T10:35:44.033 回答
6

time()每秒变化一次。 microtime()(可选,使用(true))更频繁。

$_SERVER['REQUEST_TIME']在 PHP 进程启动时设置,但它只是一个简单的变量查找,因此速度更快。大多数情况下,您不需要微秒分辨率,特别是如果该过程无论如何只运行几分之一秒来生成网页。

于 2012-08-24T10:36:46.180 回答
6

来自 php.net:

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

http://php.net/manual/en/reserved.variables.server.php (但请注意,请参阅 Alister 关于使用 REQUEST_TIME 的说明)

于 2013-04-18T15:58:06.200 回答
2

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

于 2012-08-24T10:35:12.220 回答
2

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

$milliseconds = round(microtime(true) * 1000);
于 2012-08-24T10:36:18.210 回答
1

您应该使用 time() 或 microtime() 或 uniqid() 如果这需要是唯一的用于验证目的。

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

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

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

于 2012-08-24T10:34:12.253 回答