|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | |
|
Membre éclairé
![]() Chef de projet MOA Inscription : décembre 2004 Messages : 561 ![]() |
Bonjour,
Pour expliciter un peu le titre de ce poste voici mon problème à l'origine: je voulais (comme pas mal de monde) déterminer le temps de connexion de chaque utilisateur sur mon site web. Pour cela j'utilise les sessions php. A chaque création de session j'enregistre la date (et l'heure), le nom, l'IP et l'id de session de l'utilisateur, dans une table de ma base de données. Jusqu'ici tout va bien... Le problème c'est pour déterminer la date et l'heure de la déconnexion. J'ai un bouton 'déconnexion' mais comme la plupart des utilisateurs en général ferme le navigateur sans cliquer sur ce bouton, je ne peux pas l'utiliser de manière fiable pour déterminer la date de fin de session. J'ai donc créée un script php avec une boucle infini (while (1)) qui recherche dans la table de la base tout les enregistrements qui n'ont pas de date de fin et qui compare l'id de session avec les noms des fichiers de session. Ceci fonctionne bien, mais je ne sais pas trop pour le moment quel est l'impacte en terme de fonctionnement sur serveur web et sur le serveur de base de données. Est-ce que le fait d'avoir un petit script qui tourne en permanence peut avoir un gros impacte sur le serveur en terme de temps d'accès ou autre? Je mets ci-dessous le code de ce script afin que vous puissiez me dire s'il y a moyen d'optimiser ce script ou bien s'il y a un autre moyen pour détecter l'heure de fin de session? Merci. Voici le script: (pour info config/connexion.php contient la connexion à la base de données... comme on peut s'en douter ;-) ) Citation:
|
|
|
|
00
|
|
|
#2 |
![]() Développeur Web Inscription : juin 2004 Messages : 2 148 ![]() |
de toutes facons, ton script sera arreté au bout d'un temps limite défini par php.ini
cette limite peut être enlevée si tu as accès à la config de php. et puis une boucle infini, c'est pas génial pour les performances en général... tu utilises un sleep donc, pourquoi pas... sur mon site, je me contentais de faire ceci: chaque fois qu'une page est chargée, je lance de manière aléatoire (une petite proba) la fonction de nettoyage des sessions Pas franchement une solution, mais bon, un avis c'est déjà ca... |
|
|
00
|
|
|
#3 | |
|
Membre éclairé
![]() Chef de projet MOA Inscription : décembre 2004 Messages : 561 ![]() |
Citation:
A moins qu'il y ait une autre variable dans php.ini qui passe outre cette fonction? |
|
|
|
00
|
|
|
#4 | ||
![]() Développeur Web Inscription : juillet 2003 Messages : 676 ![]() |
Code :
Meme avis que MasterOfChakhaL A chaque connexion (voire chaque page), un petit nettoyage des sessions (moi je fais pas d'aléatoire, je me contente d'un LIMIT dans la requete (5 à 10)
__________________
Articles sur developpez.com - Gestion des exceptions avec PHP5 - Chiffrement et hash en PHP contre l'attaque Man in the middle - Aedituus - Espace membre sécurisé en PHP5 Lithium : ORM ActiveRecord PHP5 extrêmement léger |
||
|
00
|
|
|
#5 | |
|
Membre éclairé
![]() Chef de projet MOA Inscription : décembre 2004 Messages : 561 ![]() |
Citation:
|
|
|
|
00
|
|
|
#6 | |
|
Membre éclairé
![]() Chef de projet MOA Inscription : décembre 2004 Messages : 561 ![]() |
Citation:
Soit 2 visiteurs V1 et V2 qui se connectent sur le site respectivement à 14h00 et à 15h00 et qui reste sur le site 2 minutes. Alors, le temps de connexion de V1 sera de 15h00 - 14h00 soit une durée de 1h, alors qu'il n'est resté en réalité que 2 minutes. C'est bien ça? ou il y a un truc qui m'a échappé? |
|
|
|
00
|
|
|
#7 |
![]() Développeur Web Inscription : juin 2004 Messages : 2 148 ![]() |
je crois bien que c'est ca...
plus il y aura de visiteurs, plus la technique est précise pour mesurer le temps de connexion. quoiqu'il arrive le temps sera toujours surestimé... |
|
|
00
|
|
|
#8 |
|
Membre éclairé
![]() Chef de projet MOA Inscription : décembre 2004 Messages : 561 ![]() |
Le problème de cette solution pour mon cas c'est que le site va avoir quelques temps de forte affluence et de grandes périodes d'inactivité (qq semaines voire un mois ou deux). C'est donc pas très satisfaisant pour ce site(même si je suis conscient qu'il n'y a pas de solution spécifique).
|
|
|
00
|
|
|
#9 |
![]() Développeur Web Inscription : juin 2004 Messages : 2 148 ![]() |
puisque tu as accès à ton serveur, pourquoi n'essaierais tu pas de lancer des scripts de nettoyage depuis la cron table?
ca t'éviterais d'avoir une boucle infini, cron s'en occupera |
|
|
00
|
|
|
#10 |
![]() Développeur Web Inscription : juillet 2003 Messages : 676 ![]() |
pas du tout
tu enregistre à chaque page la date de dernier acces. si tu connais la date d'arrivé du visiteur, tu fait la différence et t'as le temps de connexion, meme si il est calculer 1h après
__________________
Articles sur developpez.com - Gestion des exceptions avec PHP5 - Chiffrement et hash en PHP contre l'attaque Man in the middle - Aedituus - Espace membre sécurisé en PHP5 Lithium : ORM ActiveRecord PHP5 extrêmement léger |
|
00
|
|
|
#11 | |
|
Membre éclairé
![]() Chef de projet MOA Inscription : décembre 2004 Messages : 561 ![]() |
Citation:
|
|
|
|
00
|
|
|
#12 | |
|
Membre éclairé
![]() Chef de projet MOA Inscription : décembre 2004 Messages : 561 ![]() |
Citation:
|
|
|
|
00
|
|
|
#13 |
|
Membre éclairé
![]() Chef de projet MOA Inscription : décembre 2004 Messages : 561 ![]() |
Ca veux dire qu'il faut tracer toutes les pages du site...Il va falloir que je supprime des pages si je veux pas y passer 3 jours
|
|
|
00
|
|
|
#14 |
![]() Développeur Web Inscription : juillet 2003 Messages : 676 ![]() |
tu n'as pas un fichier inclus commun à toutes les pages?
style un header.php, voir meme la connexion à la BDD, si c'est le cas, fais ce traitement la dedans.
__________________
Articles sur developpez.com - Gestion des exceptions avec PHP5 - Chiffrement et hash en PHP contre l'attaque Man in the middle - Aedituus - Espace membre sécurisé en PHP5 Lithium : ORM ActiveRecord PHP5 extrêmement léger |
|
00
|
|
|
#15 |
|
Membre éclairé
![]() Chef de projet MOA Inscription : décembre 2004 Messages : 561 ![]() |
C'est pas con...
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com