private static function getBatchArray() { $_analyz = config::getAnalyz(); $_analyz_count = count($_analyz); //只有一个线程时,作一个批次 if (self::$forkCount < 2) { self::$forkCount = 1; return array($_analyz); } //线程数大于配置数,每个配置一个线程 if ($_analyz_count <= self::$forkCount) { self::$forkCount = $_analyz_count; return array_chunk($_analyz, $_analyz_count, TRUE); } //平均分配置到线程数,最后一个线程分得最多个 $_mod = $_analyz_count % self::$forkCount; if ($_mod == 0) { return array_chunk($_analyz, self::$forkCount, TRUE); } else { $_batchSlice = floor($_analyz_count / self::$forkCount); $array_pop = array_slice($_analyz, 0 - $_mod); $_analyz = array_diff_key($_analyz, $array_pop); $_batchArray = array_chunk($_analyz, $_batchSlice, TRUE); array_push($_batchArray, array_merge(array_pop($_batchArray), $array_pop)); return $_batchArray; } }
public static function run() { $analyz = config::getAnalyz(); if (!is_array($analyz) || count($analyz) < 1) { return ''; } foreach ($analyz as $rName => $config) { self::analyzerRun($rName, $config); } }
public static function run() { config::getConfig(); \SeasLog::setBasePath(config::getAnalyzerPath()); if ($forkCount = config::getForkCount()) { coreRun\pcntl::setForkCount($forkCount); coreRun\pcntl::run(); } else { coreRun\single::run(); } }
public function __construct() { self::$_config = config::getAnalyzEmail(); }