50 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			50 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
/* An easy way to keep in track of external processes.
 | 
						|
* Ever wanted to execute a process in php, but you still wanted to have somewhat controll of the process ? Well.. This is a way of doing it.
 | 
						|
* @compability: Linux only. (Windows does not work).
 | 
						|
* @author: Peec
 | 
						|
*/
 | 
						|
class ClassProcess {
 | 
						|
  private $pid;
 | 
						|
  private $command;
 | 
						|
 | 
						|
  public function __construct($cl=false){
 | 
						|
    if ($cl != false){
 | 
						|
      $this->command = $cl;
 | 
						|
      $this->runCom();
 | 
						|
    }
 | 
						|
  }
 | 
						|
  private function runCom(){
 | 
						|
    $command = 'nohup '.$this->command.' > /dev/null 2>&1 & echo $!';
 | 
						|
    exec($command ,$op);
 | 
						|
    $this->pid = (int)$op[0];
 | 
						|
  }
 | 
						|
 | 
						|
  public function setPid($pid){
 | 
						|
    $this->pid = $pid;
 | 
						|
  }
 | 
						|
 | 
						|
  public function getPid(){
 | 
						|
    return $this->pid;
 | 
						|
  }
 | 
						|
 | 
						|
  public function status(){
 | 
						|
    $command = 'ps -p '.$this->pid;
 | 
						|
    exec($command,$op);
 | 
						|
    if (!isset($op[1]))return false;
 | 
						|
    else return true;
 | 
						|
  }
 | 
						|
 | 
						|
  public function start(){
 | 
						|
    if ($this->command != '')$this->runCom();
 | 
						|
    else return true;
 | 
						|
  }
 | 
						|
 | 
						|
  public function stop(){
 | 
						|
    $command = 'kill '.$this->pid;
 | 
						|
    exec($command);
 | 
						|
    if ($this->status() == false)return true;
 | 
						|
    else return false;
 | 
						|
  }
 | 
						|
}
 |