Bonjour à tous,
voilà ça fait quelques jours que je planche sur un petit problème, je fais donc appel à vous.
En fait j'ai pour objectif de réaliser une petite application Web qui donne la possibilité à l'utilisateur de redémarrer / arrêter le serveur Apache qui héberge cette appli.
Pour arrêter apache il n'y a pas de souci, c'est en fait pour le redémarrer que ça pose problème.
L'application Web fonctionnant sur le serveur Apache lui même mon problème vient du fait que quand je lance mon script PHP qui est censé redémarrer le serveur, celui ci s'arrête bien mais ne redémarre pas.. J'en ai conclut que le fait que le serveur soit arrêté, mon script et stoppé juste après l'arrêt du serveur et donc le redémarrage n'a pas lieu.
J'utilise la fonction proc_open() pour exécuter mes commandes (j'ai aussi testé avec exec() mais sans résultat).
Je me disais que peut être une option de la fonction proc_open() pourrait m'aider mais je n'ai pas trouvé. Idem pour les variables d'environnements je ne sais pas si elles pourraient jouer un rôle dans la résolution de mon problème.
J'ai aussi pensé à une applet JAVA qui s'occuperait de lancer les commandes, mais je crains avoir le même souci du fait que l'applet serait géré par Apache (comme pour mon script PHP) et donc stoppé lorsque le serveur s'arrête.
En fait ce que j'aimerais savoir, c'est s'il est possible d'exécuter une commande en tâche de fond, pour que la commande ne soit pas stoppée lors de l'extinction d'Apache. Peut être que ça se joue au niveau des variables d'environnements de proc_open, ou des options ?
L'idée de développer un serveur Web pour mon application m'a traversé l'esprit mais j'ai vite abandonné l'idée ^^, j'ai suffisamment de travail sur mon application.
Je vous poste le code qui s'occupe d'exécuter ma commande de redémarrage, s'il y a d'autres informations dont j'aurais oublié de préciser n'hésitez pas à me les demander.
Merci d'avance
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 public function run($command){ $descriptorspec = array( 0 => array("file", $logfile, "a"), // stdin is the log file 1 => array("file", $logfile, "a"), // stdout is the log file 2 => array("file", $errorfile, "a"), // stderr is the log file ); $process = proc_open("sudo " . $command, $descriptorspec, $pipes, NULL, $_ENV); if (is_resource($process)) { fclose($pipes[0]); while(!feof($pipes[1])) echo fgets($pipes[1], 1024); //Closing fclose($pipes[1]); $return_value = proc_close($process); if($return_value == 0) return true; else return false; } }
++
Sliim
Partager