Heim > Artikel > Backend-Entwicklung > Doppeltes Problem mit der Mikrozeitausgabe in PHP
Die Ausgabe von microtime() an verschiedenen Stellen in meiner Methode führt zur gleichen Zeit
Serverinformationen
Die Ausgabe von microtime() an verschiedenen Stellen in meiner Methode führt zur gleichen Zeit
Serverinformationen
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();