Précédent   Forum des professionnels en informatique > PHP > Langage > Sessions
Sessions Forum d'entraide sur les sessions avec PHP. Avant de poster -> FAQ sessions, Cours sessions et Sources sécurité
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 22/06/2006, 09h25   #1
Invité de passage
 
Inscription : juin 2006
Messages : 11
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 11
Points : 1
Points : 1
Par défaut detection de fin de session

Bonjour,

Je dois créer un outil web :

-Connexion login mot de passe (je sais faire)
-Interroger une base de données (je sais faire)
-insérer des informations dans une table temporaire avant validation (ou
annulation) (je sais faire)
-effacer ou valider la table temporaire si l'utilisateur valide ou annule (je sais
faire)
-Valider automatiquement les tables temporaires si le client se déconnecte en
cliquant sur le bouton déconnexion (pas très très dure, je sais faire)

-Valider automatiquement les tables temporaire si le client ferme de manière
brutal la page web (je sais pas faire).
-Valider automatiquement les tables temporaire si l'ordinateur du client s'éteint (panne de batterie) (je sais pas faire).
-Même chose pour panne de connexion internet, wifi etc...

Bref, comment puis je détecter si le client n'est plus connecté mais n'a pas fermé la session, et surtout comment puis je lancer un script PHP dans ce cas....

Merci beaucoup

Elan
elan_gi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/06/2006, 10h09   #2
Membre habitué
 
Inscription : janvier 2006
Messages : 140
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 140
Points : 131
Points : 131
oh...

j'imagine qu'il faut faire un module de suivi de l'utilisateur. Genre quand il se connecte, à chaque fois qu'il interroge une page tu mets un timestamp dans une table qui contient son ID et la date de sa derniere action...

mais pour l'éxecuter en routine, je vois pas... a moins que tu viennes une fois par jour dans l'admin. Mais apparemment tu veux pas que ça marche comme ça...
drommk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/06/2006, 14h00   #3
Invité de passage
 
Inscription : juin 2006
Messages : 11
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 11
Points : 1
Points : 1
ou alors, si ça existe, je veux bien faire que au bout de 30 minutes d'inactivité, ce soit automatiquement validé.

Mais est ce que c'est possible?
elan_gi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/06/2006, 14h02   #4
Invité de passage
 
Inscription : juin 2006
Messages : 11
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 11
Points : 1
Points : 1
et en effet, je ne veux pas me connecter tout les jours, ni faire une verification à chaque connexion d'un utilisateur que le precedent n'ai pas validé....

Elan

PS: desolé pour les fautes eventuelles, je sors d'un pot avec les collegues.
elan_gi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/06/2006, 14h46   #5
Invité de passage
 
Inscription : juin 2006
Messages : 11
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 11
Points : 1
Points : 1
Pour resumer ma demande,

Est ce qu'il existe en php un moyen lors d'une communiction client serveur d'enclancher un script dans 30 minutes (qui peut être annulé si le client effectue autre chose entre temps)

Cordialement

Elan
elan_gi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/06/2006, 15h22   #6
Membre habitué
 
Inscription : janvier 2006
Messages : 140
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 140
Points : 131
Points : 131
http://www.webcron.org

m'en demande pas plus, je l'ai pas testé mais apparemment ça marche
drommk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/06/2006, 16h08   #7
Invité de passage
 
Inscription : juin 2006
Messages : 11
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 11
Points : 1
Points : 1
Merci, je vais m'inspirer de cela, et repondre demain ou dans le courant de la semaine prochaine si ça fonctionne ou pas.

Elan
elan_gi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/06/2006, 17h59   #8
Invité de passage
 
Inscription : juin 2006
Messages : 11
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 11
Points : 1
Points : 1
ok, a ce que j'ai compris (et utilisé), ton script PHP, permet de definir :
Le moment à partir du quel tu souhaites effectuer une sauvegarde de ta base dans un fichier (ou si on le modifie tout autre action en php).
mais elle n'est effectué seulement lorsque quelqu'un se connecte sur une page appelant le script php apres que le moment de la sauvegarde soit mise à jour.


petit resumé de ton script:

je decide de faire une sauvegarde tout les soirs à minuit (et le configure comme cela).
*23h30, rien
*23h40, quelqu'un se connecte sur mon site, le script est appellé, on est pas minuit, rien ne se passe.
*23h45, le dude quitte mon site, rien ne se passe.
*23h59, bien sur, rien.
*24h00, rien (le script n'est pas appellé).
*2h40, quelqu'un se connecte sur mon site, le scipt est appellé, il (le script) se rend compte que minuit est passé et qu'il n'y a pas de sauvegarde de faite. Il en fait une et attend la prochaine connexion pour tester la date.

Alors que ce que je veux moi c'est:

un utilisateur arrive sur mon site, rentre une information.
stockage sur une table temporaire de l'info
il annule l'info.
suppression de l'info sur ma table
il remet une info sur ma table.
stockage sur une table temporaire de l'info
il quitte mon site (de maniere brutal, pas de fin de session) sans annuler l'info
30 minutes apres qu'il ai rentré la deuxieme info, elle passe de la table temporaire à la table définitive (alors que personne ne s'est connecté sur mon site).

snif, aidez moi.....:'(
elan_gi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/06/2006, 18h02   #9
Membre régulier
 
Inscription : juin 2004
Messages : 92
Détails du profil
Informations forums :
Inscription : juin 2004
Messages : 92
Points : 75
Points : 75
un cron qui va lancer un script de vérification toutes les minutes?

Une fois que ton client est parti, le process apache associé est mort, donc il ne peut forcémment rien faire.
CrazyCat est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/06/2006, 18h07   #10
Invité de passage
 
Inscription : juin 2006
Messages : 11
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 11
Points : 1
Points : 1
Bon, ben voila une reponse qui a le merite d'être claire, je ne peux donc pas avec du php lancer des scripts à interval regulier outre que "parasiter/profiter" de la connexion d'un client.

et il ne peut pas y avoir de temporisation avec une sorte de thread en java pour ne pas faire ramer le browser? de sort que je teste si à la fin de la temporisation le variable $_SESSION['pouetpouet'] existe encore.

(au quel cas je relance une autre tempo jusqu'a epuisement)
elan_gi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/06/2006, 18h25   #11
Expert Confirmé
 
Avatar de Maxoo
 
Maxime Pasquier
Expert PHP
Inscription : novembre 2004
Messages : 2 126
Détails du profil
Informations personnelles :
Nom : Maxime Pasquier
Âge : 28
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Expert PHP
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : novembre 2004
Messages : 2 126
Points : 2 602
Points : 2 602
en fait j'ai pas bien compris ce que tu veux faire.
mais déja faut que tu comprennes que tu n'as pas de gestion de temps en php.

apres tu dis : je veux bouger l'info de la table TEMP à une autre.
et tu rajoutes, sans aller sur le site. mais on s'en fiche en fait, car si personne ne va sur le site, ta variable elle peut rester en TEMP 3 ans

et le jour ou quelqu'un va sur le site le script fait tout ce qu'il a a faire en fonction du timestamp de la derniere action.

en gros PHP tu peux pas lui dire dans 30 minutes fait ca. mais tu peux lui dire la prochaine fois qu'on te lance, si la comparaison des dates fait plus de 30 minutes, tu fais ca. et voila tout.
__________________
Pour une bien meilleur lisibilité, utilisez la balise [code], c'est le [#] dans votre éditeur.
Mon espace Développez : mes Créations.


Rencontre & Carte des Membres de Developpez.com, version 3.0
Maxoo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/06/2006, 18h31   #12
Invité de passage
 
Inscription : juin 2006
Messages : 11
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 11
Points : 1
Points : 1
oui, c'est ce que j'ai compris... pô cool.

Mais il se peut que personne ne se connecte avant 3 ans aussi.

et sinon, avec la fonction sleep() , ça ne marchera pas non plus?

Grand instant de solitude,
est ce que à partir du moment ou le client a fermé sa page web, le script PHP s'arrete la ou il en est?
elan_gi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/06/2006, 19h17   #13
Expert Confirmé
 
Avatar de Maxoo
 
Maxime Pasquier
Expert PHP
Inscription : novembre 2004
Messages : 2 126
Détails du profil
Informations personnelles :
Nom : Maxime Pasquier
Âge : 28
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Expert PHP
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : novembre 2004
Messages : 2 126
Points : 2 602
Points : 2 602
soit logique avec toi même, ca peut te faire quoi si le truc reste pendant 3 ans dans la table TEMP, puisque personne ira y voir, et le jour ou tu vas la voir, elle se mets dans la bonne TABLE.

c'est ça PHP, de plus PHP, c'est coté serveur, quand ta page HTML arrive sur ton browser le script php est fini.
__________________
Pour une bien meilleur lisibilité, utilisez la balise [code], c'est le [#] dans votre éditeur.
Mon espace Développez : mes Créations.


Rencontre & Carte des Membres de Developpez.com, version 3.0
Maxoo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/06/2006, 20h40   #14
Membre régulier
 
Inscription : juin 2004
Messages : 92
Détails du profil
Informations forums :
Inscription : juin 2004
Messages : 92
Points : 75
Points : 75
Citation:
Envoyé par elan_gi
et sinon, avec la fonction sleep() , ça ne marchera pas non plus?
bien sur sleep(1800) fera une pause d'une demi-heure... sur le poste client
CrazyCat est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/06/2006, 09h14   #15
Invité de passage
 
Inscription : juin 2006
Messages : 11
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 11
Points : 1
Points : 1
ok, j'ai compris je lache l'affaire avec du php

Merci neanmoins pour votre aide.

je vais voir du coté des script cgi-bin comment ça marche.
à moins que vous ne pensiez à aute chose.

Elan
elan_gi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/06/2006, 09h24   #16
Membre habitué
 
Inscription : janvier 2006
Messages : 140
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 140
Points : 131
Points : 131
Citation:
Envoyé par Maxoo
en gros PHP tu peux pas lui dire dans 30 minutes fait ca. mais tu peux lui dire la prochaine fois qu'on te lance, si la comparaison des dates fait plus de 30 minutes, tu fais ca. et voila tout.
ce qui revient à ce que je disais. Tu lances ton cron toutes les heures sur un script qui vérifie toute la table contenant les timestamp des dernières activités de l'utilisateur. Si > 30 min => traitement de sauvegarde.

Si cron est fiable ça devrait pas poser de problèmes si ?
drommk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/06/2006, 11h03   #17
Expert Confirmé
 
Avatar de Maxoo
 
Maxime Pasquier
Expert PHP
Inscription : novembre 2004
Messages : 2 126
Détails du profil
Informations personnelles :
Nom : Maxime Pasquier
Âge : 28
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Expert PHP
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : novembre 2004
Messages : 2 126
Points : 2 602
Points : 2 602
Citation:
Envoyé par drommk
ce qui revient à ce que je disais. Tu lances ton cron toutes les heures sur un script qui vérifie toute la table contenant les timestamp des dernières activités de l'utilisateur. Si > 30 min => traitement de sauvegarde.

Si cron est fiable ça devrait pas poser de problèmes si ?
Tu écoutes pas ce que je veux te faire comprendre.
si tu utilises un cron il va te vérifier ton site toutes les 30 minutes, soit 48 fois par jour, pendant 3 ans : soit un peu plus de 50 000 fois.

50 000 fois ton site va vérifier qu'il y a quelque chose dans la table TEMP, et si oui le bouger.
la première fois il y aura quelque chose à bouger et le reste du temps y aura rien a faire.

et tour ca pour quoi ? pour rien, parce que tu te servira pas de ton site pendant ce temps la.

Le cron ca sert à lancer des scripts à des heures précise, parce qu'on a besoin de recevoir un mail, lancer une newsletter etc.

Tu comprends ou pas ?
__________________
Pour une bien meilleur lisibilité, utilisez la balise [code], c'est le [#] dans votre éditeur.
Mon espace Développez : mes Créations.


Rencontre & Carte des Membres de Developpez.com, version 3.0
Maxoo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/06/2006, 12h32   #18
Invité de passage
 
Inscription : juin 2006
Messages : 11
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 11
Points : 1
Points : 1
De toute façon cron ne se lance pas automatiquement toutes les 30 minutes.

supposont que je le regle pour 30 minutes,

il n'est lancé que lorsqu'un client se connecte sur le site, la il verifie par rapport à la derniere sauvegarde si il est temp d'en faire une autre.

mais il ne fera pas de sauvegarde tout seul si personne ne se connecte sur mon site pendant 3 ans.

Car comme dit précédement (et à mon grand malheur), un script php ne peut être lancé que par la connexion client. La le script s'execute, et une fois fini, il envoie l'html correspondant au client.

Tiens, ca me donne une idée.
si je fais une frame vide d'html mais que je fais un truc du genre

[code]
<?PHP
sleep(10);
if isset($_SESSION['Pouetpouet']) // si le client est encore connecté
header($_SELF_PHP); //ou un truc comme cela
else // si il s'est déconnecté
fonction_valider_la_table_temporaire();
?>
[code]

mon truc fonction si un serveur php marche comme cela :
-Un client se connect sur une page index.php
-Le serveur commence à executer le code PHP
-Le client quitte la page avant la fin de l'execution du code
-Le serveur fini l'execution du code PHP
-Le serveur essaye d'envoyer (ou non, je m'en criss) l'HTML au client

et non
-Un client se connect sur une page index.php
-Le serveur commence à executer le code PHP
-Le client quitte la page avant la fin de l'execution du code
-Le serveur NE fini PAS l'execution du code PHP

Mais est ce que c'est la cas?

Merci.

Elan
elan_gi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/06/2006, 12h39   #19
Membre habitué
 
Inscription : janvier 2006
Messages : 140
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 140
Points : 131
Points : 131
Citation:
Envoyé par Maxoo
Tu écoutes pas ce que je veux te faire comprendre.
si tu utilises un cron il va te vérifier ton site toutes les 30 minutes, soit 48 fois par jour, pendant 3 ans : soit un peu plus de 50 000 fois.

50 000 fois ton site va vérifier qu'il y a quelque chose dans la table TEMP, et si oui le bouger.
la première fois il y aura quelque chose à bouger et le reste du temps y aura rien a faire.

et tour ca pour quoi ? pour rien, parce que tu te servira pas de ton site pendant ce temps la.

Le cron ca sert à lancer des scripts à des heures précise, parce qu'on a besoin de recevoir un mail, lancer une newsletter etc.

Tu comprends ou pas ?

oui oui. J'avais déjà compris... La question étant plutôt : quelle alternative est possible alors ?
drommk est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h23.


 
 
 
 
Partenaires

Hébergement Web