Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[PHP] Van microtime naar seconden

Pagina: 1
Acties:
  • 298 views

Onderwerpen


  • Reveller
  • Registratie: Augustus 2002
  • Laatst online: 05-12-2022
Ik heb twee functies om van verschillende processen te kunnen bijhouden hoe lang ze duren. Door timer_read() aan te roepen, krijg je in seconden (dat is althans de bedoeling) de tijd sinds de timer gestart is.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
function timer_start($name) {
  global $timers;

  list($usec, $sec) = explode(' ', microtime());
  $timers[$name]['start'] = (float)$usec + (float)$sec;
  $timers[$name]['count'] = isset($timers[$name]['count']) ? ++$timers[$name]['count'] : 1;
}

/**
 * Read the current timer value without stopping the timer.
 */
function timer_read($name) {
  global $timers;

  list($usec, $sec) = explode(' ', microtime());
  $stop = (float)$usec + (float)$sec;
  $diff = round(($stop - $timers[$name]['start']) * 1000, 2);

  return $timers[$name]['time'] + $diff;
}

Nu had ik alleen gedacht dat (door met 1000 te vermenigvuldigen), ik de tijd in seconden zou krijgen. Maar in plaats daarvan krijg ik uitkomsten als 451.79, 1794.01 en 5477.51. Het zou best kunnen dat dit 0,45; 1,79 en 5,47 seconden is. Ik kan mijn code makkelijk aanpassen dat hij de komma verschuift, maar snappen doe ik het daarmee nog niet.

Vandaar mijn vraag: klopt deze functie?

"Real software engineers work from 9 to 5, because that is the way the job is described in the formal spec. Working late would feel like using an undocumented external procedure."


  • Onbekend
  • Registratie: Juni 2005
  • Nu online

Onbekend

...

Hoeveel miliseconden zitten er in een seconde? Juist 1000.
Dus 451 miliseconden is 0,451 seconde.

Aan jou het besluit of je het getal met 1000 moet vermenigvuldigen of juist moet delen. :)

Speel ook Balls Connect en Repeat


  • Herko_ter_Horst
  • Registratie: November 2002
  • Niet online
Als je nou even opzoekt hoeveel seconden een microseconde is, dan weet je het antwoord...

En als je dan ook nog even de documentatie van microtime leest, weet je dat je ook gewoon een float terug kunt krijgen die al in seconden is.

[ Voor 44% gewijzigd door Herko_ter_Horst op 18-02-2011 20:59 ]

"Any sufficiently advanced technology is indistinguishable from magic."


  • Svennetjee
  • Registratie: December 2007
  • Laatst online: 10:56
Onbekend schreef op vrijdag 18 februari 2011 @ 20:52:

[..]

Aan jou het besluit of je het getal met 1000 moet vermenigvuldigen of juist moet delen. :)
Je moet helemaal niets doen, optellen is genoeg :) De msec's worden namelijk door php als seconden geleverd (0.xxxx sec = xxxx msec).

De hele vermenigvuldiging kun je er dus volgensmij gewoon uithalen ;)

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 02:54
Ten eerste: microseconden zijn miljoenste seconden, niet duizendste (dat zijn milliseconden).

Ten tweede: microtime(TRUE) geeft de tijd al als floating point getal terug (in seconden) dus als je die variant gewoon gebruikt, dan hoef je zelf helemaal niet meer te rekenen.

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

Of anders zoek je gewoon even in de handleiding wat voorbeeldjes op, waar letterlijk dezelfde toepassing uitgelegd wordt waar jij hier naar zoekt.

Ik dacht daarnaast ook dat jij ernaar ging streven wat meer anderen te gaan helpen en wat minder te gaan leechen van het forum. Jammer dat ik daar niets van terugzie. Moet je zelf weten, maar in dat geval heb ik ook geen zin om je de manual te gaan voorkauwen. ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.

Pagina: 1

Dit topic is gesloten.