高防服务器

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


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

发布时间:2021-09-23 16:19:46 来源:高防服务器网 阅读:81 作者:iii 栏目:开发技术

这篇文章主要介绍“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') . "_] 进程正在执行中rn";      exit();     }    }  }

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

[微信提示:高防服务器能助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。

[图文来源于网络,不代表本站立场,如有侵权,请联系高防服务器网删除]
[