微秒unix时间整数,在PHP中为字符串

微秒unix时间整数,在PHP中为字符串,php,time,Php,Time,我需要当前unixtime作为字符串中的整数微秒。这段代码有可能在32位整数的机器上运行,所以我最好避免使用整数。该值仅用于SQL查询,因此可以使用字符串 使用以下代码是否安全 $x = explode(' ', microtime()); $y = $x[1] . substr($x[0], 2, 6); 假设microtime返回值中这些子字符串的坐标是不变的,安全吗?它在PHP手册中,只要您相信PHP不会很快开始破坏向后兼容性,那么是的,您可以相信这一点 默认情况下,microtime以

我需要当前unixtime作为字符串中的整数微秒。这段代码有可能在32位整数的机器上运行,所以我最好避免使用整数。该值仅用于SQL查询,因此可以使用字符串

使用以下代码是否安全

$x = explode(' ', microtime());
$y = $x[1] . substr($x[0], 2, 6);
假设microtime返回值中这些子字符串的坐标是不变的,安全吗?

它在PHP手册中,只要您相信PHP不会很快开始破坏向后兼容性,那么是的,您可以相信这一点

默认情况下,microtime以毫秒-秒的形式返回字符串,其中秒是自Unix纪元1970年1月1日格林威治标准时间0:00:00以来以秒为单位测量的当前时间,而毫秒是自秒以来以秒为单位经过的微秒数

如果将get_as_float设置为TRUE,则microtime返回一个float,它表示自Unix历元以来的当前时间(以秒为单位),精确到最近的微秒

编辑无需担心,我误解了

它在PHP手册中,所以只要您相信PHP不会很快开始破坏向后兼容性,那么是的,您可以相信这一点

默认情况下,microtime以毫秒-秒的形式返回字符串,其中秒是自Unix纪元1970年1月1日格林威治标准时间0:00:00以来以秒为单位测量的当前时间,而毫秒是自秒以来以秒为单位经过的微秒数

如果将get_as_float设置为TRUE,则microtime返回一个float,它表示自Unix历元以来的当前时间(以秒为单位),精确到最近的微秒

编辑无需担心,我误解了

假设微时间返回值中这些子串的坐标是不变的,安全吗

是的,差不多。字符串返回值存在,因为保留的时间较长。一个建议的更改是使可选参数默认为true,但是,您可以将其设置为false以获取字符串

假设微时间返回值中这些子串的坐标是不变的,安全吗


是的,差不多。字符串返回值存在,因为保留的时间较长。但是,一个建议的更改是使可选参数默认为true,然后,您可以将其设置为false以获取字符串。

为什么需要具有如此高精度的UNIX时间戳?为什么要将msec分隔开?@KingCrunch:以便能够比不使用1秒粒度更准确地维护消息到达服务器的顺序记录。我知道该方法并不完美,但它是一种改进和简单的方法。@hakre:为了提高效率,我决定将该值作为bigint20存储在数据库中,并启用排序,并将其作为字符串在PHP中处理。@fsb:我认为确保使用原子操作/事务结束时使用一个简单的自动递增列的顺序是最好的选择最准确。你现在可以说,两个完全同时插入的查询可能会以随机顺序插入,但是你会在microtime中遇到同样的问题,我看不出来,如此高的精度让人觉得有用,而不是说两者同时出现。为什么需要如此高精度的UNIX时间戳?为什么要将msec分开?@KingCrunch:能够比没有一秒钟的粒度更准确地维护消息到达服务器的顺序记录。我知道该方法并不完美,但它是一种改进和简单的方法。@hakre:为了提高效率,我决定将该值作为bigint20存储在数据库中,并启用排序,并将其作为字符串在PHP中处理。@fsb:我认为确保使用原子操作/事务结束时使用一个简单的自动递增列的顺序是最好的选择最准确。你现在可以争辩说,两个完全同时插入的查询可能会以随机顺序插入,但是你会在microtime中遇到同样的问题,我不认为这样高的精度会让你觉得有用,而只是说两个查询同时进入。在我的阅读中,手册与PHP的行为不一致。我得到了string21 0.35134900 1310425828,其中0.35134900显然不是以秒表示的自秒以来经过的微秒数。但可能手册比代码更容易修复。@fsb:mind以秒表示,mind以秒为单位。文件对我来说很有效。Msec永远不会是一个或更大。@hakre:噢,我的天哪。我终于明白你的意思了。这种受折磨的结构应该被视为对语言的犯罪。这超出了我的想象,以秒表示的时间改变了它紧接着的微秒数,而不是秒数。以秒表示的微秒数是一种奇怪的表示一秒分数的方式。谢谢你破译了这个。@fsb:很好,我们谈过了;在我看来,这本手册是不一致的
PHP的行为就在这里。我得到了string21 0.35134900 1310425828,其中0.35134900显然不是以秒表示的自秒以来经过的微秒数。但可能手册比代码更容易修复。@fsb:mind以秒表示,mind以秒为单位。文件对我来说很有效。Msec永远不会是一个或更大。@hakre:噢,我的天哪。我终于明白你的意思了。这种受折磨的结构应该被视为对语言的犯罪。这超出了我的想象,以秒表示的时间改变了它紧接着的微秒数,而不是秒数。以秒表示的微秒数是一种奇怪的表示一秒分数的方式。谢谢你破译了这个。@fsb:很好,我们谈过了;所以使用microtimefalse可能会更安全一些。所以使用microtimefalse可能会更安全一些。