Heim  >  Artikel  >  Backend-Entwicklung  >  Doppeltes Problem mit der Mikrozeitausgabe in PHP

Doppeltes Problem mit der Mikrozeitausgabe in PHP

WBOY
WBOYOriginal
2016-10-22 00:14:231046Durchsuche

Die Ausgabe von microtime() an verschiedenen Stellen in meiner Methode führt zur gleichen Zeit Doppeltes Problem mit der Mikrozeitausgabe in PHP

ServerinformationenDoppeltes Problem mit der Mikrozeitausgabe in PHP

Antwortinhalt:

Die Ausgabe von microtime() an verschiedenen Stellen in meiner Methode führt zur gleichen Zeit Doppeltes Problem mit der Mikrozeitausgabe in PHP

ServerinformationenDoppeltes Problem mit der Mikrozeitausgabe in PHP

Mikrozeit ist nicht eindeutig. Wer legt fest, dass sie nicht gleichzeitig ausgegeben werden kann?

Hinweis: Die Mikrozeit von PHP verwendet das Ergebnis der gettimeofday-Funktion im System direkt für die Ausgabe, ohne dass eine Cache-Verarbeitung erforderlich ist. Wenn das Ergebnis dasselbe ist, speichert PHP es nicht.

Implementierung von Mikrozeit in 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>

Ich erinnere mich, dass der Lehrer über die Genauigkeit des PHP-Algorithmus gesprochen hat. Bitten Sie den Meister unten, die spezifischen Fragen zu beantworten

echo microtime();
sleep(1);
echo microtime();

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn