php-cli ile yazmış olduğum bir script için böyle bir özellik gerekti. Seri bir komut çalıştırma işlemi sırasında komutun aldığı bazı parametreler çalıştırdığımız programı sonsuz döngüye sokuyordu. Bunu önlemek için o parametre ile çalışan komutu kill -9 ile öldürme yoluna gittim. İnternette yaptığım küçük bir araştırma sonrası php.net’te 2005 yılında windows için benzer bir fonksiyon yazılmış. Bu fonksiyonu linux sunucuda çalışacak şekilde uyarladım. Bir gün birinin işine yarayabilir diye buraya da aktarıyorum.
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;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);
}
Bahri Meriç CANLI
Latest posts by Bahri Meriç CANLI (see all)
- Telefon değişince atıl kalan Samsung Gear 2 hayata döndü - 14 Ocak 2022
- Su test cihazı aldım ve şişe suları ölçtüm - 19 Ağustos 2018
- AVRT5 APRS Tracker - 11 Aralık 2017