이 문서의 예에서는 PHP 예약 작업에서 여러 프로세스가 동일한 작업을 호출하는지 확인하는 방법을 설명합니다. 참고하실 수 있도록 모든 사람과 공유하세요. 자세한 내용은 다음과 같습니다.
회사에서는 예약된 작업을 사용할 때 두 개의 프로세스가 동일한 예약된 작업을 실행하여 많은 작업이 두 번 실행되는 상황이 발생했습니다. 이러한 상황을 방지하려면 Linux 프로세스에 제한을 두어야 합니다. 이 예약된 작업을 호출하는 프로세스가 있는 경우 다른 프로세스는 해당 작업을 다시 호출할 수 없습니다. 다음은 특정 코드입니다.
// $pro 方法名字 private function _verifyPsAux($pro) { $arrProcess = array( $pro => "/usr/local/www/scrm/public/index.php /records/job/{$pro}" ); $pidNumber = 0; foreach ($arrProcess as $key => $value) { exec("ps aux|grep '$key'", $return); $isRunning = false; // 指令未执行 foreach ($return as $k => $v) { if(! strrpos($v, $value)) continue; // preg_match('/\d+:\d+ +\/usr/iu', $v, $match); // if (! isset($match[0])) continue; $isRunning = true; $pidNumber++; } // 如果当前进程存在,则终止 if ($isRunning && $pidNumber > 1) { echo '[_' . date('Y-m-d H:i:s') . "_] 进程正在执行中 \n"; exit(); } } }
이 글이 PHP 프로그래밍에 종사하는 모든 분들께 도움이 되기를 바랍니다.