千家信息网

php中如何验证是否有多个进程调用同一个job

发表于:2024-11-25 作者:千家信息网编辑
千家信息网最后更新 2024年11月25日,这篇文章主要介绍"php中如何验证是否有多个进程调用同一个job",在日常操作中,相信很多人在php中如何验证是否有多个进程调用同一个job问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法
千家信息网最后更新 2024年11月25日php中如何验证是否有多个进程调用同一个job

这篇文章主要介绍"php中如何验证是否有多个进程调用同一个job",在日常操作中,相信很多人在php中如何验证是否有多个进程调用同一个job问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"php中如何验证是否有多个进程调用同一个job"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

在使用计划任务的时候,公司有一次出现过2个进程跑同一个计划任务的情况,导致很多job都执行了2次,为了预防这种情况需要对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') . "_] 进程正在执行中\r\n";    exit();   }  }}

到此,关于"php中如何验证是否有多个进程调用同一个job"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

0