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 成本,提升运维效率,使您更专注于核心业务创新。
[图文来源于网络,不代表本站立场,如有侵权,请联系高防服务器网删除]
[