Kill processus PHP sous serveur web linux

Bonjour,

Je suis sur un script de backup automatique qui exécute une boucle infinie du type

<?php

//boucle_infinie.php : ce scipt sauvegarde mon site tous les jours

$une_journee = 60*60*24 ;

function backup ($site_web) {
(etc. etc.) ;
}

while (1) {
backup ($site_web) ;
sleep ($une_journée) ;
}

?>


Ca marche très bien, sauf qu'à un moment donné il peut m'être utile de modifier certains paramètres : comment faire un autre script qui fasse quelque chose du type :

<?php

//kill_boucle_infinie.php : ce scipt arrête boucle_infinie.php

$boucle_infinie = ("boucle_infinie.php") ;
kill ($boucle_infinie) ;

?>


Le tout étant sur un serveur web linux (Apache -PHP -MySQL), je peux aussi utiliser la commande PH system et le kill de linux, sous forme "system (kill PID)" mais comment récupérer le PID dans un script PHP ?

La réponse est peut-être là mais je suis pas sûr de tout comprendre : je voudrais stopper UN processus et il parle de "killal" : https://www.php.net/manual/en/function.shell-exec.php#57215

9 réponses

  1. APACHE : server-status

    Exemple d'une page server-status : http://www.apache.org/server-status

    Vous y découvrez le : PID de la requete ;)

    après avec : kill PID

    pour plus d'information regardez le script shell qui restart apache : /etc/init.d

    :)
    2
    1. Contributeur
      J'ai une question : le processus que tu lances dans ton php, c'est une procédure PHP c'est ça pour backuper ton site?
      Je parle pour ton premier script.
      0
      1. VIVIVI, c'est bien ça.
        0
        1. Contributeur
          Alors non tu ne peux pas faire ce que tu souhaites.

          En revanche tu peux déposer un script directement sur le serveur unix pour effectuer cette sauvegarde, ce qui sera beaucoup plus pratique.

          Puisque ta commande killall fonctionnera, mais tu ne pourrais pas l'employer puisque ton fichier php est exécuter dans apache je suppose, donc pas de processus visible sur ta machine.

          Donc pas de killall, en revanche si tu veux utiliser un script, j'en ai un à te proposer.
          0
          1. Je suis très intéressé par ce script, quelle que soit la réponse à la question suivante.

            Ce script nécessite-t-il un accès SSH ou peut-il être executé depuis PHP sous apache/linux ? Le but serait alors de l'utilser depuis un hébergement web mutualisé sans accès SSH.
            0
            1. Contributeur
              Oui il pourrait mais je crois pas que ton hébergeur te laisse utiliser cette commande.

              De plus en mutu tu ne peux pas déposer de script enfin si mais tu ne pourras pas l'exécuter je pense.

              Règles de sécurité oblige.
              0
              1. Bon ben j'essairerai déjà avec le script que tu proposes en local, et puis par la suite je verrais ce qu'il est possible de faire... ou pas, en fonction des sécurités imposées par les hébergements mutualisés.
                0
                1. Une nouvelle piste : http://www.php.net/manual/fr/ref.exec.php

                  avec notamment proc_open et proc_terminate : si PHP est capable de lancer une appli externe et de la fermer, il doit aussi être capable de lancer un script PHP en boucle et de le stopper sur demande, non ?
                  0
                  1. http://www.ac-creteil.fr/reseaux/systemes/linux/debian/deb-tp-processus.html

                    pidof apache2

                    ps aux | grep apache
                    0