《PHP應(yīng)用:php計(jì)劃任務(wù)之驗(yàn)證是否有多個(gè)進(jìn)程調(diào)用同一個(gè)job的方法》要點(diǎn):
本文介紹了PHP應(yīng)用:php計(jì)劃任務(wù)之驗(yàn)證是否有多個(gè)進(jìn)程調(diào)用同一個(gè)job的方法,希望對(duì)您有用。如果有疑問(wèn),可以聯(lián)系我們。
本文實(shí)例講述了php計(jì)劃任務(wù)之驗(yàn)證是否有多個(gè)進(jìn)程調(diào)用同一個(gè)job的辦法.分享給大家供大家參考,具體如下:PHP應(yīng)用
在使用計(jì)劃任務(wù)的時(shí)候,公司有一次出現(xiàn)過(guò)2個(gè)進(jìn)程跑同一個(gè)計(jì)劃任務(wù)的情況,導(dǎo)致很多job都執(zhí)行了2次,為了預(yù)防這種情況需要對(duì)linux的進(jìn)程做一個(gè)限制,同一時(shí)間如果有進(jìn)程在調(diào)用這個(gè)計(jì)劃任務(wù),那么就不允許另一個(gè)進(jìn)程再進(jìn)行調(diào)用了,下面是具體的代碼.PHP應(yīng)用
// $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; // 指令未執(zhí)行 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++; } // 如果當(dāng)前進(jìn)程存在,則終止 if ($isRunning && $pidNumber > 1) { echo '[_' . date('Y-m-d H:i:s') . "_] 進(jìn)程正在執(zhí)行中\(zhòng)r\n"; exit(); } } }
希望本文所述對(duì)大家php程序設(shè)計(jì)有所幫助.PHP應(yīng)用
歡迎參與《PHP應(yīng)用:php計(jì)劃任務(wù)之驗(yàn)證是否有多個(gè)進(jìn)程調(diào)用同一個(gè)job的方法》討論,分享您的想法,維易PHP學(xué)院為您提供專業(yè)教程。
轉(zhuǎn)載請(qǐng)注明本頁(yè)網(wǎng)址:
http://www.fzlkiss.com/jiaocheng/8308.html