/** * 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(); }