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 :

Nombre de visiteurs


Sujet :

Langage PHP

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 625
    Par défaut Nombre de visiteurs
    bonjour j'ai un script (fait par moi) en début de page qui m'affiche le nombre de visiteur sur une page bien précise de mon site cependant j'aimerai actualiser de temps en temps le nombre de visiteurs sans recharger la page.

    Comment dois-je procéder ? vous allez me dire d'utiliser l'AJAX, mais est-ce que d'exécuter une requête toute les 5 minutes par exemple ne prends pas énormément de ressource ?

    Comment feriez-vous ?

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 646
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 646
    Billets dans le blog
    20
    Par défaut
    Citation Envoyé par noobyyy
    est-ce que d'exécuter une requête toute les 5 minutes par exemple ne prends pas énormément de ressource ?
    Euh... non, pas vraiment.
    Une requête AJAX, ce n'est rien d'autre qu'une requête HTTP, j'espère que ton serveur est capable de gérer une requête par 5 minutes!
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #3
    Membre Expert
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 511
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 511
    Par défaut
    Citation Envoyé par noobyyy Voir le message
    Comment feriez-vous ?
    un simple lien a cote de ton nombre de visites "rafraichir" et avec un onclick(), un apel ajax de ton script

    ps : Bovino tu m'as fait sourire =)
    La forme des pyramides prouve que l'Homme a toujours tendance a en faire de moins en moins.

    Venez discuter sur le Chat de Développez !

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 625
    Par défaut
    c'est aussi une requête SQL dans la base de données si j'ai beaucoup d'utilisateurs exemple : 100 ça fait 100 requêtes toutes les 5 minutes ça fait pas beaucoup ?

  5. #5
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 38
    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
    Par défaut
    c'est aussi une requête SQL dans la base de données si j'ai beaucoup d'utilisateurs exemple : 100 ça fait 100 requêtes toutes les 5 minutes ça fait pas beaucoup ?
    Optimise tes requêtes, mets les bons index, utilise les requêtes préparées.
    Crées-toi un script très léger dédié à ce fonctionnement seulement.
    Renvoie tes données en JSON pour faciliter l'insertion dans la page.
    Personnellement j'utiliserai un timeout pour lancer périodiquement la requête Ajax, mais c'est à toi de voir.

    Un requête de ce genre c'est normalement quelques miliseconde, plus le PHP devant ça ne devrait jamais dépasser 50ms, tu peux monitorer tout ça en utilisant FireBug et revoir ton mécanisme si c'est trop lent.

    Et non, 100 requêtes HTTP en 5min, ça fait une moyenne de 1 requête toutes les 3 secondes, c'est pas le bout du monde

  6. #6
    Membre Expert
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 511
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 511
    Par défaut
    Citation Envoyé par noobyyy Voir le message
    si j'ai beaucoup d'utilisateurs exemple : 100 ça fait 100 requêtes toutes les 5 minutes ça fait pas beaucoup ?
    je t'invite a te pencher sur les fonctions SQL, et plus precisement sur le count()

    edit : tes 100 utilisateurs, ce seraient 100 gars avec la page du compteur de visite ouvert ? ou 100 utilisateurs en base ?
    La forme des pyramides prouve que l'Homme a toujours tendance a en faire de moins en moins.

    Venez discuter sur le Chat de Développez !

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 625
    Par défaut
    niveau création je sais le faire (php, ajax et sql), je demandai juste comment précéder.

    On imagine une seule page ou j'ai 100 visiteurs par exemple, les gens quand on est sur cette page on la ferme dans 1heure ou 2. Du coup il faut que j'affiche dynamiquement le nombre de visiteur. Si je veux afficher toutes les 5 minutes la mise à jour. Il faudra envoyer une requête sql pour interroger la table connectes. 100 requêtes toutes les 5 minutes si j'ai 100 visiteurs.

    Je demandai juste par manque d’expérience sur ce sujet si cela n'allait pas prendre trop de ressources ?

    a moins de créer une fonction dans sql arf c'est quoi déjà l'autre nom a part Trigger ? SP...

  8. #8
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    un petit WebSocket

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 625
    Par défaut
    et procédure stockée ?

    --

    Citation Envoyé par Benjamin Delespierre Voir le message
    Personnellement j'utiliserai un timeout pour lancer périodiquement la requête Ajax, mais c'est à toi de voir.

    tu veux dire $.ajaxSetup() ? car $.ajaxTimeout(time) est déprécié maintenant.

  10. #10
    Membre Expert
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 511
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 511
    Par défaut
    J'ai envis de dire, que ca devrait aller question utilisation des ressources de la bete...
    apres si tu veux optimiser le truc, tu peux mettre le resultat de ta requete dans le cache apc avec un timeout de 5min et a chaque demande du nombre de visiteurs, tu check si ta variable en cache existe, sinon tu la recrais.
    comme ca tu ne fait qu'une requete en base toutes les 5min...
    du coup, tu pourrais imaginer faire plus d'appels (genre 1/min) puisque ca libere tout
    La forme des pyramides prouve que l'Homme a toujours tendance a en faire de moins en moins.

    Venez discuter sur le Chat de Développez !

  11. #11
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 625
    Par défaut
    ah ok merci ! je n'ai jamais mis une variable en cache, tu connais un bon site qui expliquerai ceci ? en faite je fais ma requête COUNT() en PDO et le résultat je le met dans une variable en php que j'aurai déjà défini en cache ?

    déjà merci pour le manuel, je vais regarder.

    il y a une limitation dans le cache ? si oui comment regarder dans le phpinfo() ?

  12. #12
    Membre Expert
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 511
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 511
    Par défaut
    pour la limitation, je dirais que ca se limite a la ram de ta machine =)
    mais sinon, "toto" representant quelques octets.... t'as de quoi faire avant de remplir tes Go... =)

    sinon pour les infos du cache, tu as plusieurs fonctions utiles ( apc_cache_info(), APCIterator::getTotalSize(), APCIterator::getTotalCount()..etc)

    il faudra juste que tu fasses attention a recuperer la bonne dll d'apc qui corresponde a ta config machine (si c'est pas la bonne, apc ne fonctionnera pas, t'auras des messages d'erreur)

    sinon pour le principe, c'est ca... tu recupere ton resultat en pdo, et ce resultat tu le mets en cache. avec un ttl (time to live), comme ca, si ta variable existe encore (avec le ttl), tu la recupere, sinon, tu re-recupere le resultat en base avec pdo.

    bon courrage
    La forme des pyramides prouve que l'Homme a toujours tendance a en faire de moins en moins.

    Venez discuter sur le Chat de Développez !

  13. #13
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 625
    Par défaut
    d'accord merci !!

    par contre une précision je suis sur 1and1 et je n'ai pas de serveur dédié.

    Cependant j'ai un nouveau problème à ce sujet.

    Quand une personne rentre sur cette page je rentre son ip dans la table connecte avec son timestamp. Par la suite une fonction vérifie que le timestamp est inférieur à 5 minutes.

    A)
    Comment supprimer la dernière entrer ?
    Dans ce cas il y aura toujours le dernier visiteur sur cette page, alors que c'est faux !

    B)
    Sur cette fameuse page on peut y rester longtemps 1heure par exemple.
    Le timestamp ne se rafraichie pas et donc si un autre utilisateur arrive l'utilisateur en cours sera supprimé de la base de données !

    Comment résoudre ces deux soucis s'il vous plait.

  14. #14
    Membre Expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Par défaut
    Citation Envoyé par noobyyy Voir le message
    B)
    Sur cette fameuse page on peut y rester longtemps 1heure par exemple.
    Le timestamp ne se rafraichie pas et donc si un autre utilisateur arrive l'utilisateur en cours sera supprimé de la base de données !
    Si tu as mis en place ton compteur de visiteurs avec rafraîchissement automatique, profites-en pour mettre à jour la table des personnes connectées lors de cet appel...

  15. #15
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 625
    Par défaut
    je fais cette intervalle sous 1, 2 minutes ?

    j'ai toujours peur d'utiliser trop de ressources, on nous apprends tellement a optimisé....

  16. #16
    Membre Expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Par défaut
    Citation Envoyé par noobyyy Voir le message
    je fais cette intervalle sous 1, 2 minutes ?

    j'ai toujours peur d'utiliser trop de ressources, on nous apprends tellement a optimisé....
    1 minute, en temps machine, c'est une éternité...

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 10/02/2009, 14h41
  2. modifier le nombre de visiteurs ajout automatique de points
    Par mina22 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 12/01/2009, 14h36
  3. Compteur compte nombre de visiteur
    Par pinot1980 dans le forum Dreamweaver
    Réponses: 2
    Dernier message: 26/03/2007, 02h39
  4. [Graphique] Nombre de visiteurs : graphique
    Par emilie_per dans le forum Bibliothèques et frameworks
    Réponses: 19
    Dernier message: 08/02/2006, 09h25

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