Feb. 19, 2011, 10:33 p.m.
posted by stackme
Generating a High-Precision Time
Use microtime(true) to get the current time in seconds and microseconds. Figure uses microtime(true) to time how long it takes to do 1,000 regular expression matches.
Timing with microtime( )
Support for the optional argument microtime( ) was added in PHP 5.0.0. Without that argument, with an argument that doesn't evaluate to true, or in an earlier version of PHP, microtime( ) returns a string that contains the microseconds part of elapsed time since the epoch, a space, and seconds since the epoch. For example, a return value of 0.41644100 1026683258 means that 1026683258.41644100 seconds have elapsed since the epoch.
Time including microseconds is useful for generating unique IDs. When combined with the current process ID, it guarantees a unique ID, as long as a process doesn't generate more than one ID per microsecond. Figure uses microtime( ) (with its string return format) to generate just such an ID.
Generating an ID with microtime( )
Note that the method in Figure is not as foolproof on multithreaded systems, where there is a non-zero (but very tiny) chance that two threads of the same process could call microtime( ) during the same microsecond.
Documentation on microtime( ) at http://www.php.net/microtime. The uniqid( ) function is good for generating unique IDs.