Domanda

Ho notato che indipendentemente dal tempo di esecuzione di un determinato script, ogni chiamata a date () restituirà lo stesso timestamp indipendentemente da dove viene chiamata la funzione all'interno dello script. Sembra che ritorni solo il momento in cui lo script ha iniziato a essere eseguito.

Ai fini della registrazione, sarebbe estremamente utile poter ottenere timestamp incrementali all'interno di uno script. È possibile? C'è un modo per farlo relativamente leggero?

Modifica: l'esempio della microtime () suggerisce potrebbe farlo. Qualcuno può confermare?

Aggiornamento: microtime () funziona, ma non posso formattarlo con la funzione date () perché date () accetta solo i timestamp come numeri interi (quindi niente microsecondi). Come posso ottenere una data correttamente formattata dal valore restituito da microtime ()?

È stato utile?

Soluzione

http://us.php.net/microtime mi dà tempi diversi all'interno dello stesso script .

Altri suggerimenti

Innanzitutto, date () viene utilizzato per formattare un timestamp - è solo il comportamento predefinito che utilizzerà il timestamp corrente, quando date () viene chiamato senza secondo parametro. Il timestamp utilizzato sarà il timestamp nel momento in cui viene chiamata la funzione: chiamare date ('Ym-d') è lo stesso che chiamare date ('Ym-d', time ()) dove time () ti darà il

  

[...] l'ora corrente misurata in   numero di secondi dall'epoca di Unix   (1 gennaio 1970 00:00:00 GMT).

Ottieni lo stesso timestamp solo ogni volta che chiami date () perché lo script è troppo veloce e viene eseguito entro un secondo senza che si verifichi alcun cambiamento di timestamp.

Per risolvere il tuo secondo problema di formattazione del microtime () valore restituito, è possibile effettuare le seguenti operazioni (non testato)

function formatTime($microtime, $format)
{
    list($timestamp, $fraction) = explode('.', $microtime);
    return date($format, (int)$timestamp) . '.' . $fraction;
}

Il valore dato a $ microtime dovrebbe essere un float , che ottieni quando passi true come parametro a microtime ()

Ho eseguito questo codice sul mio computer:

<?php
$time_start = time();

sleep(2);

$time_end = time();

print 'Start: ' . date("m/d/Y @ g:i:sA", $time_start) . '<br>';
print 'End: ' . date("m/d/Y @ g:i:sA", $time_end);
?>

E ha prodotto:

Start: 10/23/2008 @ 3:12:23PM
End: 10/23/2008 @ 3:12:25PM

Portandomi a credere che time () non restituisca semplicemente l'ora di inizio dell'esecuzione.

Puoi utilizzare il pacchetto Benchmarking Pear per ottenere informazioni sulla tempistica e sulla profilazione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top