• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

php中关于microtime输出重复问题

php 搞代码 4年前 (2022-01-23) 18次浏览 已收录 0个评论
文章目录[隐藏]

<body>

在我的方法中不同地方输出 microtime() 结果显示时间一样

服务器信息

回复内容:

<body>

在我的方法中不同地方输出 microtime() 结果显示时间一样

服务器信息

microtime又不是unique,谁规定它不能输出一样的时间了?

注:PHP的microtime直接采用了系统中gettimeofday函数的结果进行输出,没有进过任何缓存处理,如果结果一样,这锅PHP也不背。

PHP 5.3.28 中 microtime 的实现

<code>static void _php_gettimeofday(INTERNAL_FUNCTION_PARAMETERS, int mode){    zend_bool get_as_float = 0;    struct timeval tp = {0};    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|b", &get_as_float) == FAILURE) {        return;    }    if (gettimeof<strong style="color:transparent">本文来源gao@daima#com搞(%代@#码@网&</strong><strong>搞gaodaima代码</strong>day(&tp, NULL)) {        RETURN_FALSE;    }    if (get_as_float) {        RETURN_DOUBLE((double)(tp.tv_sec + tp.tv_usec / MICRO_IN_SEC));    }    if (mode) {        timelib_time_offset *offset;        offset = timelib_get_time_zone_info(tp.tv_sec, get_timezone_info(TSRMLS_C));                        array_init(return_value);        add_assoc_long(return_value, "sec", tp.tv_sec);        add_assoc_long(return_value, "usec", tp.tv_usec);        add_assoc_long(return_value, "minuteswest", -offset->offset / SEC_IN_MIN);        add_assoc_long(return_value, "dsttime", offset->is_dst);        timelib_time_offset_dtor(offset);    } else {        char ret[100];        snprintf(ret, 100, "%.8F %ld", tp.tv_usec / MICRO_IN_SEC, tp.tv_sec);        RETURN_STRING(ret, 1);    }}</code>

微秒本来就是这样,记得老师讲过关于php算法精确的问题,它还是有误差的,具体的还是请楼下大神解答吧

<?php
echo microtime();
sleep(1);
echo microtime();
?>


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:php中关于microtime输出重复问题

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址