/** * Главный метод воркера Ping. * * Выплняет в цикле пинг хостов и запись в кэш Redis. * * @access public * @static */ public static function main() { DEBUG && (print "PingWorker::main(): begin\n"); // регистрация обработчика сигналов static::initSignalHandlers(); // подключение к СУБД и кэшу Redis - оба используются DB::open(); RKS::open(); // объявление массива очередей $queue_lists = ['ok', 'prefailed', 'failed']; // итерация массива очередей foreach ($queue_lists as $queue_list) { DEBUG && printf("PingWorker::main(): begin queue '%s'\n", $queue_list); // итерация очереди while (static::$worker_loop) { // получение следующей записи из очереди $label = static::fetch($queue_list); // записей нет - выход из цикла очереди if (!$label) { DEBUG && printf("NslookupWorker::main(): break loop '%s'\n", $queue_list); break; } // выполнение процедур для лейбла static::exec($label); } DEBUG && printf("PingWorker::main(): end queue '%s'\n", $queue_list); } DB::close(); RKS::close(); DEBUG && (print "PingWorker::main(): end\n\n"); }
/** * Главный метод Воркера Nslookup. * * Выплняет в цикле разрешение имён и запись в кэш Redis. * * @access public * @static */ public static function main() { DEBUG && (print "NslookupWorker::main(): begin\n"); // регистрация обработчика сигналов static::initSignalHandlers(); RKS::open(); // итерация очереди while (static::$worker_loop) { // получение следующей записи из очереди $label = static::fetch(); // записей нет - выход if (!$label) { DEBUG && (print "NslookupWorker::main(): break loop\n"); break; } // выполнение процедур для лейбла static::exec($label); } RKS::close(); DEBUG && (print "NslookupWorker::main(): end\n\n"); }
/** * Заполнение слотов, выделяемых Воркерам. * * @access protected * @static */ protected static function recalcSlots() { DEBUG && (print "Master::recalcSlots(): begin\n"); if (Config::$fork_threads) { DEBUG && printf("Master::recalcSlots(): preconfigured size = %d\n", Config::$fork_threads); if (count(static::$pid_slots) != Config::$fork_threads) { static::$pid_slots = range(1, Config::$fork_threads); } } else { $cnt = min(32, count(RKS::getInstance()->sMembers('hosts:enabled'))); DEBUG && printf("Master::recalcSlots(): dynamic size = %d\n", $cnt); static::$pid_slots = range(1, $cnt); RKS::close(); } DEBUG && (print "Master::recalcSlots(): end\n\n"); }