コード例 #1
0
ファイル: Process.php プロジェクト: liningwang/camera-beijing
 /**
  * Check runtime enviornment and initlialize resource for process
  * Resource include Mutex resource and shared variables
  * Call by construct
  * 
  * @return void
  */
 private function __initialize()
 {
     if (substr(php_sapi_name(), 0, 3) != 'cli') {
         throw new Hush_Process_Exception("Please use cli mode to run this script");
     }
     if (!extension_loaded("pcntl") || !extension_loaded("posix") || !extension_loaded("sysvsem")) {
         throw new Hush_Process_Exception("You need to open pcntl, posix, sysvsem extensions");
     }
     // init mutex for lock
     $mutex_id = $this->ftbm + $this->pid;
     $this->mutex = sem_get($mutex_id, 1);
     // register callback functions
     pcntl_signal(SIGTERM, array(&$this, "__singal"));
     pcntl_signal(SIGHUP, array(&$this, "__singal"));
     pcntl_signal(SIGUSR1, array(&$this, "__singal"));
     // get parent process id
     if (!self::$parentPid) {
         self::$parentPid = posix_getpid();
     }
     // do init logic in subclasses
     $this->__init();
 }