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 :

Stopper un script PHP par un autre script PHP


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Homme Profil pro
    IT Operator
    Inscrit en
    Mars 2013
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : IT Operator
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2013
    Messages : 43
    Points : 44
    Points
    44
    Par défaut Stopper un script PHP par un autre script PHP
    Bonjour à tous !

    Je vous explique ma situation : Je capture l'évènement en AJAX lorsque l'utilisateur quitte ma page PHP. Une fois capturée je souhaiterai stopper l'execution d'un script PHP qui tourne en parallèle, mais je ne sais pas trop comment faire..

    Voilà mon évènement en AJAX :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    <script type="text/javascript">
    	//$(window).bind('beforeunload', function(){
    	$(window).unload(function () {
    		var xhr_object = null; 	 
    		if(window.XMLHttpRequest) // Firefox 
    		   xhr_object = new XMLHttpRequest(); 
    		else if(window.ActiveXObject) // Internet Explorer 
    		   xhr_object = new ActiveXObject("Microsoft.XMLHTTP"); 
    		else { // XMLHttpRequest non supporté par le navigateur 
    		   alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
    		   return; 
    		} 
    		xhr_object.open("GET", "http://www.test.com/exit.php", true); 
    		xhr_object.onreadystatechange = function() { 
    	      if(xhr_object.readyState == 4) 
    	         eval(xhr_object.responseText); 
    		} 
    	   xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    	   xhr_object.send(null);
     
    	});
    </script>
    Donc voilà l'évènement fonctionne nikel et si je fais créer un fichier dans le exit.php, le fichier se crée bien donc tout roule concernant l'appel au fichier PHP.

    Sauf que maintenant est-ce possible que dans ce fichier PHP je lui dise d'arrêter un autre script PHP qui s'appelle admettons test2.php ?

    J'espère que j'ai étais assez clair sur ma demande, sinon dites-le moi j'essaierai de mieux expliquer

    A+

  2. #2
    Invité
    Invité(e)
    Par défaut
    Je crois que c'est impossible. PHP ne permets pas de gérer les threads, il est d'ailleurs pas mal critiqué pour ça.

    Mais pourquoi veux-tu arrêter un script lorsque l'on quitte une page ? Il est très long à s'exécuter ?

  3. #3
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    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
    Points : 7 762
    Points
    7 762
    Par défaut
    PHP ne permets pas de gérer les threads
    Mais si mais si, c'est possible avec l'extension PCNTL.

    Par contre, ton problème est assez complexe à résoudre sans utiliser un daemon. L'idée c'est qu'il puisse recevoir un signal pour s'arrêter, ce qui suppose que le processus tourne en permanence (donc c'est un daemon).

    Pour comprendre et fabriquer des daemons avec PHP, suivez le guide: http://kvz.io/blog/2009/01/09/create-daemons-in-php/

    Et bon courage aussi, ce n'est pas vraiment un usage standard de PHP donc c'est pas vraiment un terrain bien balisé.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Au temps pour moi je n'étais vraiment pas sur.

    Cependant je ne pense pas que ce genre de solution est intéressante... La question c'est surtout pourquoi il veut le faire.

  5. #5
    Membre du Club
    Homme Profil pro
    IT Operator
    Inscrit en
    Mars 2013
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : IT Operator
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2013
    Messages : 43
    Points : 44
    Points
    44
    Par défaut
    Tout d'abord merci pour vos réponses

    Ensuite pour répondre à la question du pourquoi je veux le faire, c'est parce que oui le script qui tourne derrière est long à s'executer. En gros le script php en sous-tâche télécharge un fichier. Si l'utilisateur veut quitter la page avant que le téléchargement soit finit, ça tourne dans le vide le temps que le téléchargement se termine.. Dès qu'il est finit paf ça prend en compte la demande de l'utilisateur.

    Pour info le téléchargement du fichier se fait en cURL, si ça peut ouvrir une autre porte pour une solution..

  6. #6
    Invité
    Invité(e)
    Par défaut
    Et ce sont des gros fichiers à chaque fois ? T'as pas une autre solution ?
    Le client ne peut pas le faire ?

  7. #7
    Membre du Club
    Homme Profil pro
    IT Operator
    Inscrit en
    Mars 2013
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : IT Operator
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2013
    Messages : 43
    Points : 44
    Points
    44
    Par défaut
    Inférieur à 2Go, et non le client ne peut pas le faire...

    Je pense que je vais devoir faire autrement, quand techniquement c'est pas possible lol J'ai aussi cherché du côté d'une requête AJAX mais j'ai rien trouvé

  8. #8
    Invité
    Invité(e)
    Par défaut
    Ah ouais quand même ^^
    Mais ton serveur va suivre quand l'appli sera en production ?

    Sinon dès que l'utilisateur quitte la page tu l'enregistre en BDD, et dans ton script qui upload le fichier < 2go tu vérifie si il y a une entrée dans la bdd. Si oui tu supprime le fichier.
    T'auras pas économisé de bande passante mais au moins de l'espace disque c'est toujours ça

  9. #9
    Membre du Club
    Homme Profil pro
    IT Operator
    Inscrit en
    Mars 2013
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : IT Operator
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2013
    Messages : 43
    Points : 44
    Points
    44
    Par défaut
    Citation Envoyé par Benjamin Delespierre Voir le message
    Mais si mais si, c'est possible avec l'extension PCNTL.

    Par contre, ton problème est assez complexe à résoudre sans utiliser un daemon. L'idée c'est qu'il puisse recevoir un signal pour s'arrêter, ce qui suppose que le processus tourne en permanence (donc c'est un daemon).

    Pour comprendre et fabriquer des daemons avec PHP, suivez le guide: http://kvz.io/blog/2009/01/09/create-daemons-in-php/

    Et bon courage aussi, ce n'est pas vraiment un usage standard de PHP donc c'est pas vraiment un terrain bien balisé.
    Je vais regarder de ce côté, mais si c'est si compliqué je vais pas trop me lancer la dedans lol

  10. #10
    Membre du Club
    Homme Profil pro
    IT Operator
    Inscrit en
    Mars 2013
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : IT Operator
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2013
    Messages : 43
    Points : 44
    Points
    44
    Par défaut
    Citation Envoyé par walane Voir le message
    Ah ouais quand même ^^
    Mais ton serveur va suivre quand l'appli sera en production ?
    Sinon
    Je vais surement mettre inférieur à 1Go ^^ Normalement il suivra, puisque je fais patienter 2min chaque lancement, et je limite à 500 personnes en simultanée, pour commencer :p

  11. #11
    Membre du Club
    Homme Profil pro
    IT Operator
    Inscrit en
    Mars 2013
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : IT Operator
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2013
    Messages : 43
    Points : 44
    Points
    44
    Par défaut
    Citation Envoyé par walane Voir le message
    Ah ouais quand même ^^
    Mais ton serveur va suivre quand l'appli sera en production ?

    Sinon dès que l'utilisateur quitte la page tu l'enregistre en BDD, et dans ton script qui upload le fichier < 2go tu vérifie si il y a une entrée dans la bdd. Si oui tu supprime le fichier.
    T'auras pas économisé de bande passante mais au moins de l'espace disque c'est toujours ça
    Je fais en sorte que les fichiers se deletent toutes les 24h, ceux qui sont pas en cours d'utilisation

  12. #12
    Invité
    Invité(e)
    Par défaut
    C'est déjà énorme 500 personnes en simultanée même avec 1go par personne ^^

  13. #13
    Membre du Club
    Homme Profil pro
    IT Operator
    Inscrit en
    Mars 2013
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : IT Operator
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2013
    Messages : 43
    Points : 44
    Points
    44
    Par défaut
    Citation Envoyé par walane Voir le message
    C'est déjà énorme 500 personnes en simultanée même avec 1go par personne ^^
    Au pire je me suis lancé là dedans pour toucher un peu à tout, et apprendre php ajax et compagnie. Si au final ça suit pas tant pis, j'aurai au moins appris

  14. #14
    Invité
    Invité(e)
    Par défaut
    Tout à fait, désolé pour le hors sujet ^^

  15. #15
    Membre du Club
    Homme Profil pro
    IT Operator
    Inscrit en
    Mars 2013
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : IT Operator
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2013
    Messages : 43
    Points : 44
    Points
    44
    Par défaut
    Merci à tous pour vos réponses en tout cas Je clôture le sujet.

    Passez une bonne semaine

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

Discussions similaires

  1. [Cookies] Lire un cookie créé par un autre script
    Par Richard Trigaux dans le forum Langage
    Réponses: 2
    Dernier message: 17/04/2008, 19h12
  2. Réponses: 5
    Dernier message: 23/12/2007, 15h12
  3. Réponses: 4
    Dernier message: 28/12/2006, 18h42
  4. Réponses: 15
    Dernier message: 22/12/2006, 15h02
  5. Réponses: 18
    Dernier message: 22/02/2006, 14h53

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