Newsgroup: it.comp.www.php
Titolo: date()

Vi ricordate il problema degli orari???
Qui di seguito la lettera di "protesta" (richiesta di assistenza)
Il vostro sistema ha problemi con gli orari. Va avanti ed indietro di due 
ore. Guardate parte della sequenza cronologica degli accessi al mio sito:
2007/05/17 09:20:55 1179386455 CEST 1 1179386455
2007/05/17 07:21:56 1179386516 Local time zone must be set--see zic manual 
page 0 1179386516
2007/05/17 09:23:11 1179386591 CEST 1 1179386591
2007/05/17 09:24:10 1179386650 CEST 1 1179386650
2007/05/17 09:24:28 1179386668 CEST 1 1179386668
2007/05/17 07:38:21 1179387501 Local time zone must be set--see zic manual 
page 0 1179387501
2007/05/17 07:49:17 1179388157 Local time zone must be set--see zic manual 
page 0 1179388157
2007/05/17 10:09:26 1179389366 CEST 1 1179389366
2007/05/17 08:27:27 1179390447 Local time zone must be set--see zic manual 
page 0 1179390447
2007/05/17 10:30:22 1179390622 CEST 1 1179390622
2007/05/17 10:52:53 1179391973 CEST 1 1179391973
2007/05/17 11:10:02 1179393002 CEST 1 1179393002
2007/05/17 11:20:53 1179393653 CEST 1 1179393653
2007/05/17 09:26:01 1179393961 Local time zone must be set--see zic manual 
page 0 1179393961
2007/05/17 11:40:05 1179394805 CEST 1 1179394805
2007/05/17 12:00:56 1179396056 CEST 1 1179396056
2007/05/17 12:11:53 1179396713 CEST 1 1179396713
2007/05/17 10:39:59 1179398399 Local time zone must be set--see zic manual 
page 0 1179398399
2007/05/17 12:45:36 1179398736 CEST 1 1179398736
2007/05/17 10:52:28 1179399148 Local time zone must be set--see zic manual 
page 0 1179399148
2007/05/17 13:17:01 1179400621 CEST 1 1179400621
2007/05/17 13:29:28 1179401368 CEST 1 1179401368
come vedete, anche se si tratta di connessioni cronologicamente ordinate per 
TIMESTAMP non corrisponde la funzione date() del vostro php
Aspetto notizie, grazie 

Salvatore Paci ha scritto:

strano forte eh? Perché non provi a ricavare la data e l'ora dalla 
timestamp dato che quest'ultima sembra esatta?

2007/05/17 09:24:10 1179386650 CEST 1 1179386650
In realta' l'errore (e glielo dice anche!) e' che saltuariamente perde la
time zone. Quando arretra di due ore, si lamenta sempre di non averla.
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?

 timestamp dato che quest'ultima sembra esatta?
----
Ti ringrazio per il consiglio: è ottimo!
Sai qual è il problema? Che quel server (famosissimo (non è aruba)) finora 
me ne ha combinate di tutti i colori.
Una delle tante: nella mia home page tengo in evidenza alcuni mini-cms di 
utenti: i più aggiornati.
Per poter evidenziare quelli aggiornati nelle ultime 24h leggo la data di 
modifica del file. Quando "questi signori del server" fanno i loro 
backup..mi ritrovo con 50 cms con la stessa ora e minuto di modifica.
:((((
Mi direte "perché non cambi server?"
Vi risponderò "perché ho la testa dura" :((( 

utenti: i piů aggiornati.
Prendine tre. Se tutti e tre hanno ore, minuti e secondi diversi, sei in
una situazione normale: leggi data ed ora di tutti, e memorizzala dentro
un file. Se tutti e tre hanno stesso timestamp, sei in una situazione di
anormalita': rileggi il file di salvataggio, e dagliene duro di touch().
Leonardo survival


 una situazione normale:
-----------------------
Non è una situazione normale.
In certi casi ho 50 cms aggiornati nel giro di 2/3 secondi. E' impossibile 
che 50 utenti modifichino il loro cms quasi contemporaneamente.

 "protesta" (richiesta di assistenza)
Visto anche gli altri messaggi che posti, mi viene un dubbio.
Ho paura che il tuo provider non abbia un solo server, ma magari una 
batteria in load-balancing, con storage su SAN. Magari uno dei server e` 
disallineato nella configurazione (ha il fuso orario sbagliato, per 
esempio), quindi ogni tanto, quando tocca a lui gestire la pagina, sballa 
l'orario.
O magari ha una versione vecchia del driver NFS e non rispetta i timestamp.
Bye.

 ha scritto nel messaggio 
news:pan.2007.05...@amiran.it...

-----------
Può darsi!
Vi farò sapere cosa (SE) mi rispondono.
Ciao 

 timestamp dato che quest'ultima sembra esatta?
--------------
non funziona
anche in questo caso si fa i ca...voli suoi
$data=date ("Y-m-d H:i:s", time()); 

Ecco le prove che ho fatto oggi:
ho convertito il timestamp in orario e mi ha scritto sempre due ore in meno 
dell'orario attuale
ho aggiunto 7200 (secondi) al timestamp ed ogni tanto mi portava due ore 
avanti all'orario attuale.
Esiste una soluzione che escluda l'intervento sul server?



Hai provato lo script che ti avevo indicato (nello stesso post sul
flock())?
Anche se devo dire che, se ha ragione Alessandro Pellizzari (e non
ci avevo pensato ma la sua idea e' molto molto plausibile), allora
quel workaround non ti aiutera', e' tutto lo script che gira sulla
stessa macchina che e' bacata.
Ma almeno saprai cosa dire ai gestori. "Una delle macchine c'ha la
rogna!" :-)
Prova anche ad eseguire cose come
	shell_exec('hostname -a');
o
	shell_exec('/sbin/ifconfig');
per vedere se riesci a capire su quale macchina gira lo script. Se
una decina di esecuzioni ti danno risultati diversi...
Leonardo


 shell_exec('/sbin/ifconfig');
---------------------------------------------------
<?php
shell_exec('hostname -a');
shell_exec('/sbin/ifconfig');
?>
Warning: shell_exec() [function.shell-exec]: Cannot execute using backquotes 
in Safe Mode in /rootdomain/it/s/a/
salvatorepaci.it/public_html/prova.php
 on 
line 2
Warning: shell_exec() [function.shell-exec]: Cannot execute using backquotes 
in Safe Mode in /rootdomain/it/s/a/
salvatorepaci.it/public_html/prova.php
 on 
line 3

 flock())?
-------------
Ho cercato nel thread CHAT ma non ho trovato alcuno script da te postato.
Se invece ti riferisci a quello script che forniva anche dei messaggi... 
eccone il risultato:


Ho cercato nel thread CHAT ma non ho trovato alcuno script da te postato.
Ecchelo:
	$now = time();
	$dt1 = date(..., $now);
	// sleep(1);
	$dt2 = date(..., $now);
	if ($dt1 != $dt2)
	{
		// sleep(1);
		$dt3 = date(..., $now);
		if ($dt1 == $dt3)
			$date = $dt3;
		else
			$date = $dt2;
	}
	else
		$date = $dt1;
...e alle perse riattiva il secondo sleep, o addirittura anche il primo.
Se no, puoi provare a vedere quando date("<timezone>") ti ritorna l'errore
(usando strpos); quando cio' succede, somma 7200 a $now, prima di chiamare
date("<timeformat>").
Leonardo rozzo
