Probleme avec la fonction time()

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par Recif, 12 Février 2010.

  1. Recif
    Recif WRInaute impliqué
    Inscrit:
    25 Août 2004
    Messages:
    848
    J'aime reçus:
    0
    bonjour,

    J'ai un petit souci avec time()
    A chaque fois qu'un nouvel utilisateur s'enregistre, je récupère le timestamp avec time() et l'insère dans la table, dans l'enregistrement correspondant à l'utilisateur venant de s'enregistrer. Mais chose très bizarre, j'ai des fois des résultats avec 20mn d'avance que l'heure de récupération de time()! Je ne comprends pas, avez vous déjà eu ce phénomène? Le time récupérant l'heure du sevreur, il ne devrait pas y avoir de l'avance par rapport à un autre utilisateur?... Des fois je vois un utilisateur enregistré 20mn après l'heure actuelle... 8O

    merci
     
  2. UsagiYojimbo
    UsagiYojimbo WRInaute accro
    Inscrit:
    23 Novembre 2005
    Messages:
    12 011
    J'aime reçus:
    133
    20mn après l'heure actuelle ou 20mn après l'heure du serveur ?
     
  3. Recif
    Recif WRInaute impliqué
    Inscrit:
    25 Août 2004
    Messages:
    848
    J'aime reçus:
    0
    Les deux... Je fais une liste des derniers utilisateurs inscrits triés par l'id (auto increment) descendant, et j'ai des utilisateurs qui sont en 2eme ou 3eme position avec une heure supérieure à celle des derniers... Mais l'heure utilisé par time() est bien celle du serveur, et celle affichée est prise sur l'enregistrement de la table, donc c'est bien la même heure qui est utilisée...
    Bizarre...
     
  4. jcaron
    jcaron WRInaute accro
    Inscrit:
    13 Février 2004
    Messages:
    2 579
    J'aime reçus:
    0
    Tu conserves bien le timestamp donné (un nombre, donc un integer dans ta base SQL) tel quel, ou tu le convertis en autre chose (une chaîne de caractères, un timestamp SQL...)?

    Dans le deuxième cas, il n'y aurait pas un problème de fuseau horaire différent dans certaines circonstances?

    Jacques.
     
  5. Recif
    Recif WRInaute impliqué
    Inscrit:
    25 Août 2004
    Messages:
    848
    J'aime reçus:
    0
    Je le stock en int(11)...
    Mais ce que je comprends pas c'est que la plupart fonctionnent, c'est juste un de temps en temps...
     
  6. jcaron
    jcaron WRInaute accro
    Inscrit:
    13 Février 2004
    Messages:
    2 579
    J'aime reçus:
    0
    Suis un peu le chemin entre l'appel à time() et le stockage en bdd, il doit y avoir un truc pas net quelque part sur le chemin, forcément. Ajoute des traces en cours de route éventuellement...

    Jacques.
     
  7. Recif
    Recif WRInaute impliqué
    Inscrit:
    25 Août 2004
    Messages:
    848
    J'aime reçus:
    0
    Ok, j'ai déjà trouvé un truc, c'est pas time() mais date() qui est utilisé pour récupérer les infos:

    Enregistrement :
    Code:
    $date = date("Y-m-d H:s:i");
    $temps = time();
    $ip = getenv("REMOTE_ADDR");
    $user = strtolower($user);
    mysql_query("insert into users set uname='$user', date='$date', timestamp='$temps', ip='$ip', email='$email', actif='0', code_activation='$code_activation', description='$description', login='$login', passwd='$passwd', categorie='$categorie'")or die(mysql_error());
    
    -> Le champs date est "datetime"

    Affichage :

    Code:
    $result=mysql_query("select uname, date from users where actif=1 order by id DESC limit 25");
    while(list($uname, $date_nf)=mysql_fetch_array($result)) {
    	$date_nf = transform_to_french_date2($date_nf);
                    echo "$uname2 ($date_nf)";
    }
    
    La fonction transform_to_french_date2 :

    Code:
    function transform_to_french_date2($echeance){
    $month['01']="01";
    $month['02']="02";
    $month['03']="03";
    $month['04']="04";
    $month['05']="05";
    $month['06']="06";
    $month['07']="07";
    $month['08']="08";
    $month['09']="09";
    $month['10']="10";
    $month['11']="11";
    $month['12']="12";
    
    $year= substr($echeance,0,4);
    $monthString=substr($echeance,5,2);
    $dayString=substr($echeance,8,2);
    $hourMinute=substr($echeance,11,5);
    
    $date_fin = "$dayString/".$month[$monthString]." $hourMinute";
    return $date_fin;
     
  8. jcaron
    jcaron WRInaute accro
    Inscrit:
    13 Février 2004
    Messages:
    2 579
    J'aime reçus:
    0
    date() renvoie une date en tenant compte du fuseau horaire. Si ce dernier est manipulé d'une façon ou d'une autre, ça va donner des résultats différents. De surcroît, tu stockes donc des informations en double.

    Le mieux est de n'utiliser que time(), stocker sous forme d'un entier, et faire la conversion (avec date par exemple) uniquement à l'affichage, qui pourra être ainsi adapté au fuseau horaire de celui qui consulte (plutôt que par celui des utilisateurs originaux).

    NB: time renvoie une valeur qui est independante du fuseau horaire puisqu'il s'agit du nombre de secondes depuis le 01/01/1970 00:00:00 UTC.

    Jacques.
     
  9. Recif
    Recif WRInaute impliqué
    Inscrit:
    25 Août 2004
    Messages:
    848
    J'aime reçus:
    0
    Effectivement, tu as raison : j'ai récupéré la date depuis le timestamp : date("m/y H:i", $timestamp) et j'ai des valeurs cohérentes!
    Merci!
     
Chargement...
Similar Threads - Probleme fonction time() Forum Date
Problème sur jquery avec fonction asynchrone Développement d'un site Web ou d'une appli mobile 6 Septembre 2022
Problème de fonctions synchrone/asynchrone Développement d'un site Web ou d'une appli mobile 24 Janvier 2021
probleme avec fonction else if Développement d'un site Web ou d'une appli mobile 12 Mars 2016
Probleme avec les fonctions {if}{else if}{else} Développement d'un site Web ou d'une appli mobile 8 Mai 2015
Problème indexation avec snapshot html. Fonctionne à moitié. Besoin d'aide !! Problèmes de référencement spécifiques à vos sites 6 Janvier 2015
probleme fonctionnement script Développement d'un site Web ou d'une appli mobile 4 Janvier 2015
problème fonction e-commerce Google Analytics 25 Octobre 2012
Problème chez Online avec la fonction mail Développement d'un site Web ou d'une appli mobile 31 Août 2010
Problème fonction URL compatible. Développement d'un site Web ou d'une appli mobile 18 Août 2010
problème fonction mail Administration d'un site Web 6 Avril 2010
Problème avec la fonction include Développement d'un site Web ou d'une appli mobile 7 Décembre 2009
Problème fonction mail() : email envoyé 3 fois. Développement d'un site Web ou d'une appli mobile 27 Avril 2009
Problème avec mes fonctions latex sur mon site URL Rewriting et .htaccess 17 Novembre 2008
Joomla, probleme d'affichage en fonction de la resolution Développement d'un site Web ou d'une appli mobile 3 Octobre 2008
Problème fonction date à devenir fou Développement d'un site Web ou d'une appli mobile 31 Mai 2008
fonction mail() pour php : probleme fichiers joints Développement d'un site Web ou d'une appli mobile 28 Février 2008
probleme avec boucle While et fonction php mail() Développement d'un site Web ou d'une appli mobile 25 Octobre 2007
Problème de style avec la fonction mail() [résolu] Développement d'un site Web ou d'une appli mobile 17 Octobre 2007
problème avec le paramètre from de la fonction mail() Développement d'un site Web ou d'une appli mobile 24 Septembre 2007
[Résolu]Problème menu en fonction du naviguateur Développement d'un site Web ou d'une appli mobile 30 Juin 2007