|
|
@ -1,14 +1,12 @@ |
|
|
<?php |
|
|
<?php |
|
|
include(__DIR__ . '/../lib/mCrossCheck.php'); |
|
|
include(__DIR__ . '/../lib/mCrossCheck.php'); |
|
|
ini_set('date.timezone', 'Asia/Shanghai'); |
|
|
ini_set('date.timezone', 'Asia/Shanghai'); |
|
|
// 同一时间只能有一个进程在运行 |
|
|
|
|
|
$lock_file = __DIR__ . '/crosscheck_auto_shell.lock'; |
|
|
// 避免程序重复运行 |
|
|
if (file_exists($lock_file)) { |
|
|
$need_run = cProcessNum(); |
|
|
echo '另一个进程正在运行,请稍后重试。' . PHP_EOL; |
|
|
if(!$need_run) { |
|
|
exit(1); |
|
|
exit("is running, exit.\n"); |
|
|
} |
|
|
} |
|
|
// 创建锁文件 |
|
|
|
|
|
touch($lock_file); |
|
|
|
|
|
|
|
|
|
|
|
$log_file = __DIR__ . '/../logs/'.date('Y-m-d').'/crosscheck_auto_shell.log'; |
|
|
$log_file = __DIR__ . '/../logs/'.date('Y-m-d').'/crosscheck_auto_shell.log'; |
|
|
$log_dir = dirname($log_file); |
|
|
$log_dir = dirname($log_file); |
|
|
@ -102,13 +100,31 @@ try{ |
|
|
sleep(60*4); |
|
|
sleep(60*4); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
// 删除锁文件 |
|
|
|
|
|
unlink($lock_file); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}catch(Exception $e){ |
|
|
}catch(Exception $e){ |
|
|
$str_log = date('Y-m-d H:i:s')."|异常退出|异常信息:".$e->getMessage(); |
|
|
$str_log = date('Y-m-d H:i:s')."|异常退出|异常信息:".$e->getMessage(); |
|
|
file_put_contents($log_file, $str_log . PHP_EOL, FILE_APPEND); |
|
|
file_put_contents($log_file, $str_log . PHP_EOL, FILE_APPEND); |
|
|
// 删除锁文件 |
|
|
} |
|
|
unlink($lock_file); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* 进程上限限制 |
|
|
|
|
|
* |
|
|
|
|
|
* @return boolean |
|
|
|
|
|
*/ |
|
|
|
|
|
function cProcessNum() { |
|
|
|
|
|
// 当前程序文件名包含路径 |
|
|
|
|
|
$path_deal = __FILE__; |
|
|
|
|
|
$processnum = 1; |
|
|
|
|
|
$cmd = "ps -ef | grep '{$path_deal}' | grep -v grep | grep -v '\/bin\/sh' | grep -v 'sh -c' | wc -l"; |
|
|
|
|
|
$rcmd = @popen($cmd, 'r'); |
|
|
|
|
|
$num = @fread($rcmd, 512); |
|
|
|
|
|
$num += 0; |
|
|
|
|
|
echo "[$path_deal]进程数超过{$processnum}个,当前进程数{$num}个\n"; |
|
|
|
|
|
@pclose($rcmd); |
|
|
|
|
|
if($num >$processnum) { |
|
|
|
|
|
return false; |
|
|
|
|
|
} |
|
|
|
|
|
return true; |
|
|
|
|
|
} |