php进程管理

新建一个进程。
exec   这个必须在php.ini 里面开启

php 只能kill php 用户创建的 比如: root run a.php 然后用 www用户 kill a.php 这样是不行的。会提示权限不够。


//重启进程;

 public static function RestartAction($run, $find)
    {
        //获取 ../..
        $path = Yii::getAlias("@path");
        if ($find && $run) { // 业务处理
            $script = $find;
            $script = trim($script);
            //获取到pid
            $arr = self::FindPidArray($script);
            foreach ($arr as $pid => $value) {
                $value = (int)$value;
                $killShell = "kill -15 {$value} 2>&1";
                exec($killShell);
            }

            $runshell = "php $path/{$run} >/dev/null 2>&1 &";

            exec($runshell, $output, $_var);
            Yii::info(['output: _var:', $output, $_var], 'myinfo');
            $arr2 = self::FindPidArray($script);
            //返回新的pid
            return $arr2[0];
        }
    }

 public static function FindPidArray($script)
    {
        $pShell = "/bin/ps -ef | /bin/grep \"{$script}\" | /bin/grep -v \"grep\" | awk '{print $2}'";
        $output = [];
        //开始执行
        exec($pShell, $output);
        $arr = [];
        foreach ($output as $pid) {
            //如果是pid就存起来
            if ($pid = (int)$pid) {
                $arr[] = $pid;
            }
        }
        return array_reverse($arr);
    }

 



posted @ 2019-05-01 15:29  llxpbbs  阅读(169)  评论(0编辑  收藏  举报