Newsgroup: it.comp.www.php
Titolo: time

Gentilmente guardate questa lista:
utente 100 04/05/2007 04:40:35
utente 101 04/05/2007 04:58:35
utente 102 04/05/2007 03:02:11
utente 103 04/05/2007 03:03:08
utente 104 04/05/2007 05:04:51
utente 105 04/05/2007 05:11:53
utente 106 04/05/2007 05:16:05
utente 107 04/05/2007 05:20:19
utente 108 04/05/2007 05:21:12
utente 109 04/05/2007 03:24:18
ho sostituito con utente xxx il vero nome utente degli iscritti al mio sito.
Quello che avete visto è una parte del file users_log.txt nel quale 
memorizzo gli orari degli ingressi.
Ogni riga viene scritta in coda al file però...guardate gli orari:
ogni tanto c'è uno sfasamento di due ore esatte.
L'utente 109 in realtà è entrato 3 minuti dopo rispetto al 108 eppure... è 
come se l'orologio del server andasse avanti ed indietro.
Come posso ovviare a questo problema?

 Come posso ovviare a questo problema?
Dipende da dove prendi quell'orario.
Se lo prendi dal browser, potrebbe essere nel suo fuso orario. Se lo
prendi impostando i locale, probabilmente lo imposti sbagliato, ecc.
Bye.

come se l'orologio del server andasse avanti ed indietro.
Da dove arriva quella data e ora?
Leonardo
-- 
 What do you make, so fair and bright;
 What do you build with sails for flight;
 What do you weave with wool so white?

 Da dove arriva quella data e ora?
--------------
  $fd=fopen("users_log.txt","a+");
  fwrite($fd, "\r\n" . $_POST['nome_utente'] . " " . date("d/m/Y") . " "  . 
date("h:i:s"));
  fclose($fd); 



Ed entrano tutti nello stesso punto? Non e' che magari qualcuno passa da
un altro script che magari gioca con la timezone?
BTW, puoi usare date('d/m/Y h:i:s') con una chiamata sola :-)


 un altro script che magari gioca con la timezone?
[..]
io proverei ad includere piu' informazioni sull'ora/data..
sostituirei con date('r') ed esaminerei il risultato..
-- 
www.iuz-lab.info

> un altro script che magari gioca con la timezone?
Stesso identico punto. 



Prova a loggare ANCHE il valore di timestamp di time(). Magari cosi' si
scopre qualcosa.


 scopre qualcosa.
-----------------
salamandra   05/05/2007 03:39:26 1178372366
pafalqui        05/05/2007 01:40:32 1178372432
pafalqui        05/05/2007 03:48:27 1178372907
come vedete il time() è corretto ma non l'orario.
Ciao

come vedete il time() è corretto ma non l'orario.
Notevolissimo... vuol dire che l'errore e' nella funzione date(). Mi
pare francamente assurdo, pero'...
Il timestamp e' SEMPRE giusto? Ci sono per caso dei punti in cui hai
un timestamp SBAGLIATO e un date giusto, che forse non hai notato in
quanto stavi guardando solo la data e non il timestamp?
Perche' in questo caso potrebbe essere qualche cosa che a intervalli
reimposta l'orologio di sistema, per esempio via netdate(), ma lo fa
nel modo sbagliato sbarellando il sync del TZ, e "apre" una finestra
in cui il timestamp e' sbagliato di una o due ore.


 quanto stavi guardando solo la data e non il timestamp?
----------------------
Il Timestamp è sempre giusto:
05/05/2007 05:56:05 1178380565
05/05/2007 06:13:54 1178381634
05/05/2007 06:18:55 1178381935<===
05/05/2007 04:22:14 1178382134<===
05/05/2007 06:36:14 1178382974
05/05/2007 06:47:42 1178383662
05/05/2007 07:17:53 1178385473
05/05/2007 07:48:53 1178387333
05/05/2007 08:23:35 1178389415
05/05/2007 08:25:38 1178389538<===
05/05/2007 06:30:47 1178389847<===
05/05/2007 08:48:46 1178390926<===
05/05/2007 08:49:26 1178390966
05/05/2007 08:51:40 1178391100<===
05/05/2007 07:06:04 1178391964<===
05/05/2007 09:15:13 1178392513<===
05/05/2007 09:45:27 1178394327
05/05/2007 09:50:01 1178394601 

Il Timestamp è sempre giusto:
A questo punto prova a loggare:
	date('Y/m/d H:i:s U T I');
Questo registra alcuni dei parametri di lavoro di date(). In ogni caso
direi che sembri proprio un bug di date().


 date('Y/m/d H:i:s U T I');
----
pacitoto        2007/05/05 21:51:53 1178401913 Local time zone must be 
set--see zic manual page 0
Intanto....erano le 23:51......... 

 date('Y/m/d H:i:s U T I');
--------------
2007/05/05 21:51:53 1178401913 Local time zone must be set--see zic manual 
page 0
2007/05/05 21:56:14 1178402174 Local time zone must be set--see zic manual 
page 0
2007/05/06 00:02:24 1178402544 CEST 1 

Intanto....erano le 23:51......... 
Hummm. Intanto sembra ci sia qualcosa che non va nella timezone; puo'
darsi che c'entri per qualcosa.
A titolo di macumba, prova a settare
	date_default_timezone_set('Europe/Rome');
se hai un PHP 5.1+. Non mi viene in mente altro :-(




Eccoci, l'hai beccato a ruba' l'uva! Per qualche motivo - forse, perche' i
buffer sono persistenti - ogni tanto ti arriva una timezone settata non da
te ma DA QUALCUN ALTRO. Quando questo succede, date() ritorna bischerate.
Bisogna tu trovi il verso di settare la TZ per il verso, oppure forse puoi
usare localtime() e l'array che ritorna, al posto di date(). Palloso.


 usare localtime() e l'array che ritorna, al posto di date(). Palloso.
---
Considerato l'utilizzo personale di quell'user_log.txt ... me lo tengo cosě.
Grazie 1.000 per il tempo che mi hai dedicato. 

 se hai un PHP 5.1+. Non mi viene in mente altro :-(
--------------
PHP Version 4.4.6
Linux domweb-4 2.6.16.49 #1 SMP Mon Apr 23 17:38:41 CEST 2007 i686 

Considerato l'utilizzo personale di quell'user_log.txt ... me lo tengo cosě.
Mah, almeno fallo presente al provider. Dall'HOWTO, settare la timezone
non pare poi tutto 'sto bagno di sangue.
