여러 프로세스가 동일한 job_php 기술을 호출하는지 확인하는 PHP 예약 작업 방법

WBOY
풀어 주다: 2016-05-16 20:03:47
원래의
955명이 탐색했습니다.

이 문서의 예에서는 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 프로그래밍에 종사하는 모든 분들께 도움이 되기를 바랍니다.

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿