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 :

Tester si le serveur ne recoit pas de réponse du client


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2007
    Messages : 92
    Par défaut Tester si le serveur ne recoit pas de réponse du client
    Voilà je voulais savoir si il y avais un moyen de réagir coté serveur en l'absence d'une réponse du client. Je m'explique

    Le javascript envoie des informations au serveur (setInterval()).
    Si le serveur ne reçoit pas les informations dans le temps imparti alors on lance un script php. cela implique de faire fonctionner ce script alors que l'utilisateur a fermer son navigateur.

    Est ce possible? si oui comment??

    Merci

  2. #2
    Membre Expert
    Avatar de Thes32
    Homme Profil pro
    Développeur PHP, .Net, T-SQL
    Inscrit en
    Décembre 2006
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur PHP, .Net, T-SQL

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 379
    Par défaut
    Salut,
    Citation Envoyé par edenreal Voir le message
    cela implique de faire fonctionner ce script alors que l'utilisateur a fermer son navigateur.

    Est ce possible? si oui comment??
    je vois pas comment à moins de le faire en mode CLI

  3. #3
    Membre Expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Par défaut
    Tu as plusieurs possibilités à ta disposition plus ou moins évoluées.
    Tu peux avoir un script qui tourne continuellement sur ton serveur et qui se charge de checker si un client a commencé une action et n'est pas revenu depuis. Par exemple en stockant une info dans une base de données disant "client xxx" => dernière action le 22/07/2009 a 11:59". Et donc toutes les minutes par exemple (une boucle while avec un sleep) tu checkes dans ta BDD tous les clients qui n'ont rien fait depuis une minute.

    Si tu n'es pas à la "minute près" tu peux lancer un script en tâche de fond à la prochaine connexion d'un utilisateur qui va lancer cette vérification. C'est bien plus simple, le problème c'est qu'il faut des connexions régulières quand meme, et le client sur qui ça tombe sentira un délai notable dans sa réponse si les actions à effectuer sont assez coûteuses en temps.

    Et je ne connais pas trop les triggers dans les bases de données mais je crois que tu peux déclencher périodiquement ce genre d'évènements aussi.

    Le stockage des infos dans une BDD n'est pas obligatoire bien sur.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2007
    Messages : 92
    Par défaut
    merci pour vos réponse,
    le but final et de vérifier que l'utilisateur ais bien fini l'action en cour avant de quitter le site. Je vais me renseigner sur les tâches cron et me replonger dans les triggers. Je vous tiens au courant sous peu. Si vous avez d'autre idées n'hésitez pas
    encore merci

  5. #5
    Modérateur
    Avatar de nouknouk
    Homme Profil pro
    Inscrit en
    Décembre 2006
    Messages
    1 655
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 655
    Par défaut
    Je plussoie koopajah.

    A noter que les solutions "while avec sleep" et "trigger sur BdD" ne sont pas applicables dans le cas d'un hébergement web 'classique' (pages persos gratuites, hébergement web à coût modéré, etc).

    Les hébergeurs configurent leurs serveur web pour forcer l'arrêt des scripts qui sont trop longs à être exécutés et les triggers sont rarement (jamais ?) disponibles sur ce genre de plateforme.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2007
    Messages : 92
    Par défaut
    Merci pour vos réponse alors je vais partir sur une mise a jour de la bdd au lancement et a la fin de l'action en cour pour visualiser ensuite si l'utilisateur à interrompue une action en cours avant de la terminer.
    Encore merci


    Clôture du sujet d'ici la fin de l'après midi

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2007
    Messages : 92
    Par défaut
    Je n'ais pas encore eu le temps de tester. JE clos ce sujet en vous remerciant encore pour vos indications

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 74
    Par défaut
    A première vue je dirai qu'il te faudrais un timer coté php aussi ... c'est pas très élégant, certes, mais la, je vois que ça ...

  9. #9
    Modérateur
    Avatar de nouknouk
    Homme Profil pro
    Inscrit en
    Décembre 2006
    Messages
    1 655
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 655
    Par défaut
    Ce n'est malheureusement pas possible en utilisant le PHP 'de base'.

    Il faut plutôt mettre en place une tâche 'cron' si tu es admin du serveur pour qu'elle exécute à intervalles régulier un script PHP (cf. le mode CLI de thes32).

    Si tu n'est pas admin de ton propre serveur, tu peux toujours faire une sorte de cron 'simplifié' à toi.

    Les concepts de base:

    - tu créées une table dans ta base de données (appelons la CRONTAB) qui va contenir les actions planifiées dans le futur, par exemple:
    * TIMESTAMP = "le 22/07/09 à 13h45"
    * SCRIPT_TO_LAUNCH = "/removeUserInConnectedList.php"
    * PARAMS ="userId=37"

    - un script php qu'on va appeler 'cron.php' va être inclu systématiquement au début de toutes les pages PHP de ton site web.

    - ce script va interroger CRONTAB et pour chaque action dont le timestamp est inférieur à la date courante, on exécute le script php avec les paramètres associés.

    L'idée est qu'à partir du moment ou un utilisateur surfe sur ton site web,tu es assuré que la crontab est exécutée, même si les délais d'exécution ne seront pas forcément très précis.

    Par contre, une action ne sera pas exécutée tant qu'au moins une page PHP de ton site aura été visitée. Par exemple, si tu as une action prévue pour être exécutée à minuit et que personne ne va sur ton site entre 23h et 7h le lendemain matin, ton action sera finalement exécutée à 7h du matin.

    Après, tout dépend de ce que tu veux faire avec ton script: dans certains cas, cette technique est suffisante, dans d'autres cas ça ne suffira pas, et il faudra te tourner vers un hébergement où tu as les droits admins ou bien vers une solution (payante) qui va appeler une de tes pages PHP à intervalles réguliers (toutes les minutes, toutes les heures, ...), genre webcron.

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

Discussions similaires

  1. [PB ODBC] Ce serveur n'existe pas ou son accès est refusé
    Par meufeu dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 28/12/2015, 18h02
  2. [WS 2003] Mon serveur ne recoit pas les connexions resaux
    Par koyt dans le forum Windows Serveur
    Réponses: 1
    Dernier message: 24/08/2009, 11h05
  3. Tester que le fichier n'est pas un fichier binaire
    Par fedfil dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 21/10/2005, 17h29
  4. Serveur dédié ou pas ??
    Par R3iTt0R dans le forum Serveurs (Apache, IIS,...)
    Réponses: 3
    Dernier message: 16/07/2004, 11h29

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