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