IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Déterminer le premier dans un contexte de concurrence [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 4
    Par défaut Déterminer le premier dans un contexte de concurrence
    Bonjour à tous !

    Je suis nouveau parmi vous et je débarque directement avec une question qui pourrait vous intéresser.

    Avec des amis, nous organisons sur un forum phpBB3 un jeu de rapidité, dans lequel il s'agit d'être le premier à poster un message à une heure très précise (à la seconde près).

    Il en résulte très souvent la situation suivante : 5 à 10 posts sont envoyés dans la même seconde, très exactement.

    Comme la fonction PHP date() ne gère pas les dixièmes, centièmes et millièmes de seconde, nous nous sommes demandés comment le système phpBB décide dans quel ordre apparaîtront les messages de chaque membre.

    Y a-t-il effectivement une sorte d'horloge interne, qui permet de définir au millième de seconde près quel message est arrivé avant l'autre ? Est-ce l'horloge du serveur hébergeant le phpBB qui est consultée ? Ou alors, est-ce tout simplement aléatoire ?

    Si l'on suppose que le système est capable de dire "ce message est arrivé avant les autres" malgré moins d'une seconde d'écart, et que l'on raisonne logiquement, cela voudrait dire qu'il y a une façon de mesurer le temps sous la seconde, non ?

    Si oui, est-il possible de demander au système le temps au millième près ?

    Merci d'avance pour vos contributions, je vais surveiller ça avec intérêt


    Ad

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Août 2005
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 514
    Par défaut
    Bonsoir,
    connaissez-vous la fonction microtime()?

    Du reste, votre sujet ne pose pas réellement de question. Si votre forum créer un identifiant pour chaque message, alors c'est le plus petit qui a posté le premier, je pense que cela coule de source, vous ne croyez pas?

    Cordialement,
    DaRiaN.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 4
    Par défaut
    Bonsoir et merci pour votre réponse !

    Non, je ne connaissais pas la fonction microtime(). Mais serait-ce donc cette fonction qui est utilisée par le serveur pour déterminer l'ordre des messages ?

    Je ne comprends pas ce que vous entendez par "un identifiant pour chaque message".

    Vous parlez du numéro du message ? Mais la question reste toute entière malgré tout : en fonction de quoi le système attribue la place de tel ou tel message, puisqu'ils sont arrivés en même temps ?

    Qu'est-ce qui est "le plus petit" ?

    Veuillez pardonner ma candeur, je débute

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Août 2005
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 514
    Par défaut
    Votre candeur vous fait-elle croire que votre serveur MySQL traite une requête en 1 seconde complète? Combien pensez-vous que votre serveur peut traiter de requête par seconde? 5 ou 6? Une centaine?

    Si vous postez une requête "en même temps" que votre ami, et si le message de votre ami porte un ID plus petit, alors, il aura posté avant vous.

    Maintenant, si vous me demandez comment phpBB3 fonctionne, je n'en sais rien et ne le saurai jamais car il m'importe peu.

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 4
    Par défaut
    L'identifiant du message est donc aléatoirement attribué aux 10 personnes qui postent en même temps ?

    Si le prochain message à être posté est le #524, qui aura le droit au #524, qui au #525, etc. ?

    C'est ça que je n'arrive pas à comprendre. Quelque chose doit m'échapper...

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Août 2005
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 514
    Par défaut
    Je serais le concepteur du forum, j'aurais utilisé un id auto_increment, prouvant ainsi que le 524 a été plus rapide que le 525 puisque les requêtes sont traités dans l'ordre d'arrivée... pourquoi voulez-vous que le hasard intervienne?

  7. #7
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2005
    Messages
    357
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2005
    Messages : 357
    Par défaut
    Salut,
    Comme dit Darian, le serveur peut traiter plusieurs requêtes par secondes mais pas en même temps. Et c'est en fonction de leur ordre d'arrivée qu'elles sont traitées. Si une requête arrive un milliardième de seconde avant la suivante, peu importe que l'on sache mesurer cette différence de temps ou non, la première sera traitée avant la deuxième. Il n'y a rien d'aléatoire la-dedans.

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 4
    Par défaut
    Très bien, merci beaucoup pour ta réponse, qui est très claire

    A bientôt !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 11/07/2006, 12h17
  2. Réponses: 3
    Dernier message: 07/06/2006, 13h11
  3. EDBEngineError : "Nom dupliqué dans ce contexte"
    Par jakouz dans le forum Bases de données
    Réponses: 1
    Dernier message: 02/11/2005, 15h50
  4. "nom dupliqué dans ce contexte"
    Par lgomez dans le forum Langage
    Réponses: 4
    Dernier message: 19/10/2005, 09h49
  5. [système] Comment ajouter un item dans le context menu de Windows ?
    Par ddmicrolog dans le forum API, COM et SDKs
    Réponses: 8
    Dernier message: 29/06/2005, 17h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo