Cml\Tools\Daemon\ProcessManage::createChildrenProcess PHP Method

createChildrenProcess() protected static method

创建一个子进程
protected static createChildrenProcess ( )
    protected static function createChildrenProcess()
    {
        $pid = pcntl_fork();
        if ($pid > 0) {
            $status = self::getStatus();
            $status['pid'][$pid] = $pid;
            isset($status['task']) || ($status['task'] = []);
            file_put_contents(self::$status, '<?php return ' . var_export($status, true) . ';', LOCK_EX);
        } elseif ($pid === 0) {
            self::setProcessName('worker');
            while (true) {
                pcntl_signal_dispatch();
                $status = self::getStatus();
                if ($status['task']) {
                    foreach ($status['task'] as $key => $task) {
                        if (time() > $task['last_runtime'] + $task['frequency']) {
                            $status['task'][$key]['last_runtime'] = time();
                            file_put_contents(self::$status, '<?php return ' . var_export($status, true) . ';', LOCK_EX);
                            call_user_func($task['task']);
                        }
                    }
                    sleep(3);
                } else {
                    sleep(5);
                }
            }
        } else {
            exit('create process error');
        }
    }