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

Langage PHP Discussion :

alerte des visites en cours


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 414
    Points : 187
    Points
    187
    Par défaut alerte des visites en cours
    Bonsoir à tous,
    Je souhaite mettre en place un système qui averti le visiteur qu'il y a déjà x visiteurs visitant la même ligne !

    Comme cela se fait sur le site de e-commerce «leboncoin», une popup qui s'affiche avec le nombre de visiteurs sur ce produit (x autres visiteurs s'intéressent au produit).

    Je patauge depuis des semaines.

    J'ai beaucoup de mal avec c hgenre de script faisant intervenir les sessions.

    J'espère avoir été clair.

    d'avance merci pour votre aide !

  2. #2
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Et avec les sessions tu va patauger longtemps vu qu'elles sont (heureusement) isolées d'un utilisateur à l'autre

    Bref, il faut que tienne à jour un information (fichier, base, hot-dog...) qui conserve un historique (récent) de chaque visiteur, ainsi tu pourra savoir en proche temps-réel qui est sur quel page.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 414
    Points : 187
    Points
    187
    Par défaut
    Merci pour ton éclairage,

    En fait j'ai parlé de sessions sans trop savoir.

    Peux-tu me dire ce que tu entends par Hot Dog, sinon, si j'ai bien compris, une des voies possibles serait une table de log avec les différents id de visiteurs que j'interroge de temps en temps (500 ou 1000 ms j'imagine).

    Autre point existe-t-il un moyen de savoir quand une transaction (mise à jour par ex) est terminée et éventuellement d'en avertir les autres visiteurs (il s'agit de la partie travail collaboratif du site) ?

    D'avance merci

  4. #4
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Peux-tu me dire ce que tu entends par Hot Dog
    Les hot-dogs sont des saussices, généralement servies dans un petit pain avec de la moutarde.

    En bref, chaque fois qu'un utilisateur va accéder à une ressource de ton site, tu vas effectuer la requête suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    REPLACE INTO `visites` SET `page_courante`=:page, `id_utilisateur`=:id, `mise_a_jour`=NOW()
    Je te laisse jouer avec PDO pour utiliser cette requête préparée

    Ensuite, sur une page quelconque tu peuf effectuer:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT COUNT(*) FROM `visites` WHERE `page_courante`=:page
    Et le placeholder :page prendra la valeur de la page en cours.

    Quid des gens qui sont partis de la page sans dire au revoir ? On ne peut pas gêrer ce cas avec PHP, on pourrait y arriver avec JavaScript mais c'est pas le débat. Ce qu'on doit faire, c'est purger cette table `visites`, il serait de bon ton d'ajouter un champ timestamp indiquant quand la donnée à été mise à jour.

    Pour faire ça, tu peux mettre un cronjob qui toutes les 20 minutes (par exemple) effectue la purge

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 414
    Points : 187
    Points
    187
    Par défaut
    Merci pour ta réponse à propos... des hot dogs ces petites saucisses que j'adore mais qui sont parfois peu diététiques !

    Plus sérieusement je regarde ta réponse + tard dans la journée après un bon... hotdog et une bière.

    J'ai déjà, pour des raisons de supervision, une table visite qui stocke toutes les visites (date/heure début visite, quelle page visualisée, par qui, date/heure fin visite, etc.) donc pas de problème pour afficher les infos sur le dossier lors du chargement par un visiteur (qui a modifié telle rubrique du dossier et à quelle heure).

    Ma problématique est l'avertissement en temps réel des mises à jour. Est-ce vraiment impossible ?

    Encore merci

  6. #6
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    J'ai déjà, pour des raisons de supervision, une table visite qui stocke toutes les visites
    Trop lourd, il faut que ça aille à la vitesse de la lumière pour ne pas impacter le temps de chargement de la page.

    Sinon, tu peux aussi charger cette information avec Ajax (et là peu importe en réalité que ça prenne plus de 100ms). Un genre de pagelet serait parfait dans ce rôle.

    Ma problématique est l'avertissement en temps réel des mises à jour. Est-ce vraiment impossible ?
    Le vrai temps réel n'est pas techniquement impossible, c'est l'étape suivante.

    J'avais trouvé un jour un script JS pour faire ça mais je le retrouve pas...

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 414
    Points : 187
    Points
    187
    Par défaut
    Trop lourd, il faut que ça aille à la vitesse de la lumière pour ne pas impacter le temps de chargement de la page.
    Je fais une requête avec une jointure ceci ne me semble pas trop long, à vérifier avec un script qui calcule le temps d'exé.

    Pour en revenir au temps réel, je pense à ce qui se passe quand tu effectue une transaction de paiement par carte le système te retourne en temps réel les indication de bon (ou pas bon plus rarement) déroulement de l'opération j'imagine avec des commit et des rollback.

    Ou trouver de l'infos sur ceci.

  8. #8
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Je fais une requête avec une jointure ceci ne me semble pas trop long, à vérifier avec un script qui calcule le temps d'exé.
    Utilise un terminal MySQL pour lancer la commande, tu verra bien. Quand à la notion de "pas trop long", si ça alourdis le script de 100ms, c'est beaucoup trop long. Je pensais à une requête atomique d'un ordre de 6ms moi.

    Pour en revenir au temps réel, je pense à ce qui se passe quand tu effectue une transaction de paiement par carte le système te retourne en temps réel les indication de bon (ou pas bon plus rarement) déroulement de l'opération j'imagine avec des commit et des rollback.
    C'est de l'Ajax. On parle pas ici de temps réel mais de l'évènementiel: le point le plus important en JavaScript.

    Pour la doc sur l'évènementiel, c'est par ici: http://www.lesintegristes.net/2008/0...y-l-evenement/

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 414
    Points : 187
    Points
    187
    Par défaut
    J'ai du mal à conceptualiser comment un script s'exécutant par définition coté client va pouvoir rendre compte d'une opération s'exécutant coté serveur.

    Avec un script Ajax qui renvoie qq chose sur un onComplete mais ca ne renvoie que le fait que le script est "completed" pas que ca bien passé ou non !

    Pourrais-tu être plus explicite

    D'avance merci

    Tous les visiteurs du site sont enregistrés avec un id, existe-t-il un moyen de connaître quel id visite quelle ligne de quelle table ? Je pense qu'après avec try & catch nous devons pouvoir avertir en cas de commit successfull les id concerné pas un message ou avertir l'initiateur en cas de catch que qq chose s'est mal passé et qu'il doit recommencer.

  10. #10
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    J'ai du mal à conceptualiser comment un script s'exécutant par définition coté client va pouvoir rendre compte d'une opération s'exécutant coté serveur.
    C'est justement ça l'Ajax.

    Avec un script Ajax qui renvoie qq chose sur un onComplete mais ca ne renvoie que le fait que le script est "completed" pas que ca bien passé ou non !
    Et je crois en te lisant que tu devrais revoir comment fonctionne un XHR

    Ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $.ajax({
      url: 'foobar.php',
      dataType: 'json',
      success: function (json) {
         if (json.success)
           ...
         else
           ...
      }
    });
    Avec jQuery c'est quand même plus facile.

    Tous les visiteurs du site sont enregistrés avec un id, existe-t-il un moyen de connaître quel id visite quelle ligne de quelle table ? Je pense qu'après avec try & catch nous devons pouvoir avertir en cas de commit successfull les id concerné pas un message ou avertir l'initiateur en cas de catch que qq chose s'est mal passé et qu'il doit recommencer.
    qu'est ce qu'une structure de contrôle comme try / catch vient faire là dedans

Discussions similaires

  1. Liste des propositions en cours
    Par Community Management dans le forum Evolutions du club
    Réponses: 163
    Dernier message: 18/08/2023, 13h39
  2. Réponses: 3
    Dernier message: 25/01/2005, 11h27
  3. Réponses: 2
    Dernier message: 14/12/2004, 18h42
  4. Réponses: 2
    Dernier message: 09/10/2004, 20h45
  5. [JSP] thread ? Message d'avancement des operations en cours
    Par buffyann dans le forum Servlets/JSP
    Réponses: 14
    Dernier message: 18/12/2003, 11h39

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