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 script php


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2014
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Septembre 2014
    Messages : 19
    Par défaut Stopper script php
    Bonjour !!

    Je suis entrain de faire un site de campagne d'emailing.

    J'ai mis en place un bouton play/pause pour l’envoie et l’arrêt de l'envoie des mails.

    Quand j'appuie sur play, l'id de la campagne choisie est envoyé à mon script php (envoie.php)

    mon script envoie.php récupère l'id et tout les mails correspondant à cet id et envoie les mails via un boucle while.

    Jusque la tout va très bien ! Le problème et le bouton stop !

    en effet, je voudrais interrompre l'envoie des mails puis reprendre lorsque j'appuie sur play

    ma question est donc comment puis je interrompre le script envoie.php ?? car une fois lancer il ne s'arrette qu'une fois tout les mails envoyer.



    Voici ma conf :

    la fonction qui est exécuté lorsque je clique sur le bouton play :
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    function lancerCampagne(idCampagne,idr,idx){
            compteur[idr] = setInterval("rafraichir("+idr+")", 1000);
            var url = 'consulter_campagne_lancer.php?id_camp='+idCampagne;
            xhr_object.open("GET",url, true);
            xhr_object.send(null);
            //filtre();
    }

    la fonction exécuter lorsque je clique sur le bouton pause :

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function arreterCampagne(idCampagne,idr){
           clearInterval(compteur[idr]);
            var url = 'consulter_campagne_arreter.php?id_camp='+idCampagne;
            xhr_object.open("GET",url, true);
            xhr_object.send(null);
    }
    donc à ce niveau tout se stop grâce au setinterval mais le script php continue en arrière plan.

    mon script envoie.php :

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    <?php
    if(isset($_GET['id_camp'])){
    $connect = mysqli_connect('localhost', 'root', '', 'test') or die(mysql_error());
    $id = $_GET['id_camp'];
    $sql = "select * from newcampagne where id = ".$id." ";
    $req = mysqli_query($connect,$sql)  or die ("ERROR SQL 2" .mysql_error());
    $aff = mysqli_fetch_assoc($req);
    		$nbr66 = $aff['id'];
            $nbr6 = 'copy'.$nbr66;
            //echo $nbr6.'<br/>';
    		$sql4 = "select * from ".$nbr6." ";
    		$req4 = mysqli_query($connect,$sql4)or die ("ERROR SQL 4".mysql_error());
    while ($resultat = mysqli_fetch_assoc($req4)) {
    		//sleep(10);
    		//$toto = $resultat['email'];
    		//echo $toto.'<br/>';
    		/*$nom = $resultat['nom'];
    		$segment = $resultat['segment'];
    		$message = $resultat['message'];
    		$sql2 = "select nom from segment where id = '".$nom."' ";
    		$req2 = mysqli_query($db,$sql2) or die ("ERROR SQL 2" .mysql_error());
    		$aff2 = mysqli_fetch_assoc($req2)
    		$nom_segment = $aff2;
    		$sql3 = "SELECT editeurtxt FROM newmess2 where objet = 'chat' "; //ORDER BY newmess2.id DESC";
    		$req3 = mysqli_query($connect,$sql3) or die("SQL Error 3: " . mysql_error());
    		$aff3 = mysqli_fetch_assoc($req3);
    		$pub = $aff3;
    		*/
    $mail = "".$resultat['email'].""; // Déclaration de l'adresse de destination.
    //echo $mail.'<br/>';
    if (!preg_match("#^[a-z0-9._-]+@(hotmail|live|msn).[a-z]{2,4}$#", $mail)) // On filtre les serveurs qui rencontrent des bogues.
    {
    	$passage_ligne = "\r\n";
    }
    else
    {
    	$passage_ligne = "\n";
    }
    //=====Déclaration des messages au format texte et au format HTML.
    $message_txt = "Salut à tous, voici un e-mail envoyé par un script PHP.";
    $message_html = "qsdqqqdqdqdqdqdqdqdpub";
    //==========
     
    //=====Création de la boundary
    $boundary = "-----=".md5(rand());
    //==========
     
    //=====Définition du sujet.
    $sujet = "Hey mon ami !";
    //=========
     
    //=====Création du header de l'e-mail.
    $header = "From: \"toto\"<toto@gmail.com>".$passage_ligne;
    $header.= "Reply-to: \"toto\" <toto@gmail.com>".$passage_ligne;
    $header.= "MIME-Version: 1.0".$passage_ligne;
    $header.= "Content-Type: multipart/alternative;".$passage_ligne." boundary=\"$boundary\"".$passage_ligne;
    //==========
     
    //=====Création du message.
    $message = $passage_ligne."--".$boundary.$passage_ligne;
    //=====Ajout du message au format texte.
    $message.= "Content-Type: text/plain; charset=\"ISO-8859-1\"".$passage_ligne;
    $message.= "Content-Transfer-Encoding: 8bit".$passage_ligne;
    $message.= $passage_ligne.$message_txt.$passage_ligne;
    //==========
    $message.= $passage_ligne."--".$boundary.$passage_ligne;
    //=====Ajout du message au format HTML
    $message.= "Content-Type: text/html; charset=\"ISO-8859-1\"".$passage_ligne;
    $message.= "Content-Transfer-Encoding: 8bit".$passage_ligne;
    $message.= $passage_ligne.$message_html.$passage_ligne;
    //==========
    $message.= $passage_ligne."--".$boundary."--".$passage_ligne;
    $message.= $passage_ligne."--".$boundary."--".$passage_ligne;
    //==========
     
    //=====Envoi de l'e-mail.
    //mail($mail,$sujet,$message,$header);
     
    //==========
     
    //sleep(1);
    $sql5 = "delete from ".$nbr6." where email = '".$mail."'";
    $req5 = mysqli_query($connect,$sql5) or die ("ERROR SQL 5".mysql_error());
     
     
     
     
    }
    //$sql5 = "delete from ".$nbr6." where email = '".$mail."'";
    //$req5 = mysqli_query($connect,$sql5) or die ("ERROR SQL 5".mysql_error());
    }
     
    ?>
    Merci d'avance

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Utilise une variable de session qui sera contrôlé à chaque tour de boucle.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2014
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Septembre 2014
    Messages : 19
    Par défaut
    Merci pour ta réponse !

    j'ai tester ceci dans mon fichier consulter_campagne_lancer.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    while ($resultat = mysqli_fetch_assoc($req4) && $_SESSION['start'] == 'O') {
    Mais je sais pas comment envoyer la variable session ( $_SESSION['start'] == 'N') quand j'appuie sur le bouton pause..

    Peux tu m'eclairer stp ?

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Pour le principe, en faisant la vérification tous les 20 tours de boucle afin de ne pas surcharger :
    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
     
    $i = 0;
    while ($resultat = mysqli_fetch_assoc($req4)) {
    if ($i%20) {
       session_start();
       if ($_SESSION['pause'] == TRUE) {
             exit();
       }
       session_write_close();
    }
    $i++;
     
    // ton code
     
    }
    Pour la modification de la variable de session, il faut seulement que tu fasses un appel ajax vers une page qui le fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    session_start();
    $_SESSION['pause'] = TRUE;
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2014
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Septembre 2014
    Messages : 19
    Par défaut
    Merci sabotage ! j'essaie de suite

  6. #6
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2014
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Septembre 2014
    Messages : 19
    Par défaut
    tu es sur pour le if($i%20) ??

    Car ca ne marche pas j'ai simplifié le code en utilisant des variables comme ceci :

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    $connect = mysqli_connect('localhost', 'root', '', 'test') or die(mysql_error());
     
    $id = 105;//$_GET['id_camp'];
    $pos = 1;//$_GET['pos'];
    $sql = "select * from newcampagne where id = ".$id." ";
    $req = mysqli_query($connect,$sql)  or die ("ERROR SQL 2" .mysql_error());
    $aff = mysqli_fetch_assoc($req);
     
    		$nbr66 = $aff['id'];
            $nbr6 = 'copy'.$nbr66;
            //echo $nbr6.'<br/>';
     
    		$sql4 = "select * from ".$nbr6." ";
    		$req4 = mysqli_query($connect,$sql4)or die ("ERROR SQL 4".mysql_error());
     
     
     
    $i = 0;
    while ($resultat = mysqli_fetch_assoc($req4)) {
    if ($i%20) {	
    if  ($pos == 0) {
     	//session_start();
     
       	echo 'stop' ;
             exit();
       } 
     
    else if ($pos = 1){ 
     
     
    echo 'go' ;}
     
    }$i++;
    }
    Une fois qu'il entre dans le if ($pos = 1), il ne vérifie pas tout les 20 tours ça nouvelle valeur (je change la valeur $pos directement dans le fichier).

    As tu une idée ?

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

Discussions similaires

  1. Stopper un script PHP par un autre script PHP
    Par Matkil888 dans le forum Langage
    Réponses: 14
    Dernier message: 06/05/2013, 15h12
  2. Quel est le meilleur script PHP de portail (CMS) ?
    Par Lana.Bauer dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 187
    Dernier message: 18/10/2012, 07h45
  3. Stopper un script php qui se prend pour superman
    Par supergrey dans le forum Langage
    Réponses: 2
    Dernier message: 08/06/2007, 22h12
  4. Pb d'execution de requete avec un script php
    Par ythierrin dans le forum Requêtes
    Réponses: 3
    Dernier message: 22/08/2003, 14h34

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