Kill processus PHP sous serveur web linux

new morning Messages postés 10 Date d'inscription   Statut Membre Dernière intervention   -  
 celiane -
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. celiane
     
    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
  2. arth Messages postés 84 Date d'inscription   Statut Contributeur Dernière intervention   1 296
     
    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
  3. new morning Messages postés 10 Date d'inscription   Statut Membre Dernière intervention   19
     
    VIVIVI, c'est bien ça.
    0
  4. arth Messages postés 84 Date d'inscription   Statut Contributeur Dernière intervention   1 296
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. new morning Messages postés 10 Date d'inscription   Statut Membre Dernière intervention   19
     
    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
  7. arth Messages postés 84 Date d'inscription   Statut Contributeur Dernière intervention   1 296
     
    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
  8. new morning Messages postés 10 Date d'inscription   Statut Membre Dernière intervention   19
     
    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
  9. new morning Messages postés 10 Date d'inscription   Statut Membre Dernière intervention   19
     
    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
  10. celiane
     
    http://www.ac-creteil.fr/reseaux/systemes/linux/debian/deb-tp-processus.html

    pidof apache2

    ps aux | grep apache
    0