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 :

detection de fin de session


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Inscrit en
    Juin 2006
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 11
    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

  2. #2
    Membre éprouvé
    Inscrit en
    Janvier 2006
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 140
    Par défaut
    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...

  3. #3
    Membre du Club
    Inscrit en
    Juin 2006
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 11
    Par défaut
    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?

  4. #4
    Membre du Club
    Inscrit en
    Juin 2006
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 11
    Par défaut
    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.

  5. #5
    Membre du Club
    Inscrit en
    Juin 2006
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 11
    Par défaut
    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

  6. #6
    Membre éprouvé
    Inscrit en
    Janvier 2006
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 140
    Par défaut
    http://www.webcron.org

    m'en demande pas plus, je l'ai pas testé mais apparemment ça marche

  7. #7
    Membre du Club
    Inscrit en
    Juin 2006
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 11
    Par défaut
    Merci, je vais m'inspirer de cela, et repondre demain ou dans le courant de la semaine prochaine si ça fonctionne ou pas.

    Elan

  8. #8
    Membre du Club
    Inscrit en
    Juin 2006
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 11
    Par défaut
    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.....:'(

  9. #9
    Membre actif

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 94
    Par défaut
    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.

  10. #10
    Membre du Club
    Inscrit en
    Juin 2006
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 11
    Par défaut
    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)

  11. #11
    Membre Expert

    Homme Profil pro
    Expert PHP
    Inscrit en
    Novembre 2004
    Messages
    2 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    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 127
    Par défaut
    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.

  12. #12
    Membre du Club
    Inscrit en
    Juin 2006
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 11
    Par défaut
    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?

  13. #13
    Membre Expert

    Homme Profil pro
    Expert PHP
    Inscrit en
    Novembre 2004
    Messages
    2 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    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 127
    Par défaut
    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.

  14. #14
    Membre actif

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 94
    Par défaut
    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

  15. #15
    Membre du Club
    Inscrit en
    Juin 2006
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 11
    Par défaut
    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

  16. #16
    Membre éprouvé
    Inscrit en
    Janvier 2006
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 140
    Par défaut
    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 ?

  17. #17
    Membre Expert

    Homme Profil pro
    Expert PHP
    Inscrit en
    Novembre 2004
    Messages
    2 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    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 127
    Par défaut
    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 ?

  18. #18
    Membre du Club
    Inscrit en
    Juin 2006
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 11
    Par défaut
    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

  19. #19
    Membre éprouvé
    Inscrit en
    Janvier 2006
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 140
    Par défaut
    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 ?

Discussions similaires

  1. [AJAX] Detecter fin de session
    Par bender86 dans le forum AJAX
    Réponses: 5
    Dernier message: 16/04/2011, 20h53
  2. detecter fin de session
    Par wechteuf dans le forum VB.NET
    Réponses: 3
    Dernier message: 25/09/2009, 18h03
  3. [MySQL] detection de fin de session
    Par SpaceFrog dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 09/02/2009, 19h09
  4. Detecter la fin d'un ecran de veille
    Par fredderf dans le forum MFC
    Réponses: 12
    Dernier message: 13/06/2005, 18h08

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