<?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;
  }
}
