Przy poszczególnych wiadomościach zapisuje czas ich zapisania za pomocą time(), niestety dokładność time() jest zbyt mała, więc zainteresowałem się funkcją microtime(). Problemem jest to, że podaje ona oddzielnie mikrosekundy i sekundy. W manualu znalazłem poniższą funkcję:
<?php function getmicrotime(){ return ((float)$usec + (float)$sec); } ?>
Łączy ona oba ciągi tworząc jedną liczbę zmiennoprzecinkową co by mi wystarczyło z czego jednak wiem operacje na liczbach zmiennoprzecinkowych są wolniejsze od operacji na zwykłych liczbach (jeśli jest inaczej wyprowadźcie mnie z błędu). Postanowiłem więc utworzyć jedną liczbę łącząc liczbę sekund z dwiema pierwszymi liczbami mikrosekund:
<?php function getmicrotime() { $msec *= 100; $int = $sec.(int)$msec; return $int; } ?>
Problem jednak gdy liczba mikrosekund jest mniejsza niż 10 np. 0,03. Wtedy po pomnożeniu przez 100 otrzymam liczbę 3. Natomiast gdybym miał liczbę 0,30 po pomnożeniu otrzymam liczbę 30. Jeśli liczba sekund przykładowo wynosiłaby 125 to po połączeniu z mikrosekundami otrzymam liczby: 1253 i 12530 co oczywiście nie jest prawidłowe. Niby mógłbym wykrywać czy liczba jest mniejsza od 10 i dodawać wiodące 0, jednak gdybym mnożył przez 1000 i więcej sprawa byłaby bardziej skomplikowana, jak to rozwiązać, pracować na ciągach?