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); } }