Executer une commande linux via le PHP
Posté : 15 oct. 2012, 19:11
Bonjour à tous (et à toutes peut etre) !
Mon message est considéré comme du spam alors qu'il n'y a pas de lien dedans.. Donc je vais essayer de le poster petit à petit x)
J'ai passé plusieurs heures à parcourir les forums mais à chaque fois les réponses sont soient sans réponse soient différente de ce qui me concerne..
Ce que je voudrais, c'est de pouvoir via un bouton ou n'importe quoi sur une page en php, arreter,redemarrer,lancer un script en .sh sur un serveur linux bien sur. Le GROS problème (sinon j'avais déjà ma réponse) c'est que ce script est lancé une dizaine de fois.. Le nom de chaque fichier est différent mais au final le processus porte le même nom.
On m'a proposé ce script :
J'espère avoir été assez clair, et j'espère que vous pourrez m’expliquer, ou m'en proposer un autre !
Mais en tout cas, merci beaucoup par avance !
J'ai passé plusieurs heures à parcourir les forums mais à chaque fois les réponses sont soient sans réponse soient différente de ce qui me concerne..
Ce que je voudrais, c'est de pouvoir via un bouton ou n'importe quoi sur une page en php, arreter,redemarrer,lancer un script en .sh sur un serveur linux bien sur. Le GROS problème (sinon j'avais déjà ma réponse) c'est que ce script est lancé une dizaine de fois.. Le nom de chaque fichier est différent mais au final le processus porte le même nom.
On m'a proposé ce script :
<?php
function PsExecute($command, $timeout = 60, $sleep = 2) {
// First, execute the process, get the process ID
$pid = PsExec($command);
if( $pid === false )
return false;
$cur = 0;
// Second, loop for $timeout seconds checking if process is running
while( $cur < $timeout ) {
sleep($sleep);
$cur += $sleep;
// If process is no longer running, return true;
echo "\n ---- $cur ------ \n";
if( !PsExists($pid) )
return true; // Process must have exited, success!
}
// If process is still running after timeout, kill the process and return false
PsKill($pid);
return false;
}
function PsExec($commandJob) {
$command = $commandJob.' > /dev/null 2>&1 & echo $!';
exec($command ,$op);
$pid = (int)$op[0];
if($pid!="") return $pid;
return false;
}
function PsExists($pid) {
exec("ps ax | grep $pid 2>&1", $output);
while( list(,$row) = each($output) ) {
$row_array = explode(" ", $row);
$check_pid = $row_array[0];
if($pid == $check_pid) {
return true;
}
}
return false;
}
function PsKill($pid) {
exec("kill -9 $pid", $output);
}
?>
Mais problème je ne le comprend pas.. Car je débute dans linux, et pour le php, je sais gérer les formulaires, les avis/commentaires etc mais pas plusJ'espère avoir été assez clair, et j'espère que vous pourrez m’expliquer, ou m'en proposer un autre !
Mais en tout cas, merci beaucoup par avance !