PHP의 마이크로타임 출력에 대한 중복 문제

WBOY
풀어 주다: 2016-10-22 00:14:23
원래의
1046명이 탐색했습니다.

나의 방법에서 microtime()을 다른 위치에 출력하면 동일한 시간이 발생합니다 PHP의 마이크로타임 출력에 대한 중복 문제

서버 정보PHP의 마이크로타임 출력에 대한 중복 문제

답글 내용:

나의 방법에서 microtime()을 다른 위치에 출력하면 동일한 시간이 발생합니다 PHP의 마이크로타임 출력에 대한 중복 문제

서버 정보PHP의 마이크로타임 출력에 대한 중복 문제

마이크로타임은 고유하지 않습니다. 누가 동일한 시간을 출력할 수 없다고 규정합니까?

참고: PHP의 마이크로타임은 캐시 처리 없이 시스템의 gettimeofday 함수 결과를 직접 사용하여 결과가 동일한 경우 PHP는 이를 기억하지 않습니다.

PHP 5.3.28에서 마이크로타임 구현

<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 (gettimeofday(&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 알고리즘의 정확성에 대해 말씀하셨던 기억이 납니다. 구체적인 질문은 아래층의 마스터에게 문의하세요.

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

관련 라벨:
php
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿