/** * 检查worker配置、worker语法错误等 * @return void */ public static function checkWorkersConfig() { $pad_length = 26; $total_worker_count = 0; // 检查worker 是否有语法错误 echo "----------------------WORKERS--------------------\n"; foreach (Config::getAllWorkers() as $worker_name => $config) { if (empty($config['start_workers'])) { \Man\Core\Master::notice(str_pad($worker_name, $pad_length) . " [start_workers not set]\tServer start fail"); exit(str_pad($worker_name, $pad_length) . "[31;40m [start_workers not set][0m\n\n[31;40mServer start fail[0m\n"); } $total_worker_count += $config['start_workers']; // 语法检查 if ($worker_file = \Man\Core\Lib\Config::get($worker_name . '.worker_file')) { $class_name = basename($worker_file, '.php'); } else { $worker_file = WORKERMAN_ROOT_DIR . "workers/{$worker_name}.php"; $class_name = $worker_name; } if (0 != self::checkSyntaxError($worker_file, $class_name)) { unset(Config::instance()->config[$worker_name]); \Man\Core\Master::notice("{$worker_name} has Fatal Err"); echo str_pad($worker_name, $pad_length), "[31;40m [Fatal Err] [0m\n"; continue; } if (isset($config['user'])) { $worker_user = $config['user']; if (!self::checkWorkerUserName($worker_user)) { echo str_pad($worker_name, $pad_length), "[31;40m [FAIL] [0m\n"; \Man\Core\Master::notice("Can not run {$worker_name} processes as user {$worker_user} , User {$worker_user} not exists\tServer start fail"); exit("\n[31;40mCan not run {$worker_name} processes as user {$worker_user} , User {$worker_user} not exists[0m\n\n[31;40mServer start fail[0m\n\n"); } } echo str_pad($worker_name, $pad_length), "[32;40m [OK] [0m\n"; } if ($total_worker_count > \Man\Core\Master::SERVER_MAX_WORKER_COUNT) { \Man\Core\Master::notice("Number of worker processes can not be more than " . \Man\Core\Master::SERVER_MAX_WORKER_COUNT . ".\tPlease check start_workers in " . WORKERMAN_ROOT_DIR . "config/main.php\tServer start fail"); exit("\n[31;40mNumber of worker processes can not be more than " . \Man\Core\Master::SERVER_MAX_WORKER_COUNT . ".\nPlease check start_workers in " . WORKERMAN_ROOT_DIR . "config/main.php[0m\n\n[31;40mServer start fail[0m\n"); } echo "-------------------------------------------------\n"; }
/** * 检查worker配置、worker语法错误等 * @return void */ public static function checkWorkersConfig() { $current_pwuid = posix_getpwuid(posix_getuid()); $current_user_name = $current_pwuid['name']; self::$maxUserNameLength = strlen($current_user_name); foreach (Config::getAllWorkers() as $worker_name => $config) { if (strlen($worker_name) > self::$maxWorkerNameLength) { self::$maxWorkerNameLength = strlen($worker_name); } if (isset($config['user']) && strlen($config['user']) > self::$maxUserNameLength) { self::$maxUserNameLength = strlen($config['user']); } if (isset($config['listen']) && strlen($config['listen']) > self::$maxListenLength) { self::$maxListenLength = strlen($config['listen']); } } $total_worker_count = 0; // 检查worker 是否有语法错误 echo "------------------------[47;30m WORKERS [0m-------------------------------\n"; echo "[47;30muser[0m", str_pad('', self::$maxUserNameLength + 2 - strlen('user')), "[47;30mworker[0m", str_pad('', self::$maxWorkerNameLength + 2 - strlen('worker')), "[47;30mlisten[0m", str_pad('', self::$maxListenLength + 2 - strlen('listen')), "[47;30mprocesses[0m", str_pad('', self::$maxProcessCountLength + 2 - strlen('processes')), "[47;30m", "status[0m\n"; foreach (Config::getAllWorkers() as $worker_name => $config) { if (isset($config['user'])) { $worker_user = $config['user']; if (!self::checkWorkerUserName($worker_user)) { echo str_pad($config['user'], self::$maxUserNameLength + 2), str_pad($worker_name, self::$maxWorkerNameLength + 2), "[31;40m [FAIL] [0m\n"; \Man\Core\Master::notice("Can not run {$worker_name} processes as user {$worker_user} , User {$worker_user} not exists\tWorkerman start fail"); exit("\n[31;40mCan not run {$worker_name} processes as user {$worker_user} , User {$worker_user} not exists[0m\n\n[31;40mWorkerman start fail[0m\n\n"); } } else { $worker_user = $current_user_name; } echo str_pad($worker_user, self::$maxUserNameLength + 2), str_pad($worker_name, self::$maxWorkerNameLength + 2); if (isset($config['listen'])) { echo str_pad($config['listen'], self::$maxListenLength + 2); } else { echo str_pad('none', self::$maxListenLength + 2); } if (empty($config['start_workers'])) { \Man\Core\Master::notice(str_pad($worker_name, 40) . " [start_workers not set]\tWorkerman start fail"); exit(str_pad('', self::$maxProcessCountLength + 2) . "[31;40m [start_workers not set][0m\n\n[31;40mWorkerman start fail[0m\n"); } echo str_pad(' ' . $config['start_workers'], self::$maxProcessCountLength + 2); $total_worker_count += $config['start_workers']; // 语法检查 if ($worker_file = \Man\Core\Lib\Config::get($worker_name . '.worker_file')) { $class_name = basename($worker_file, '.php'); } else { \Man\Core\Master::notice("{$worker_name} not set worker_file in conf/conf.d/{$worker_name}.conf"); echo "[31;40m [not set worker_file] [0m\n"; continue; } if (0 != self::checkSyntaxError($worker_file, $class_name)) { //unset(Config::instance()->config[$worker_name]); \Man\Core\Master::notice("{$worker_name} has Fatal Err"); echo "[31;40m [Fatal Err] [0m\n"; continue; } echo "[32;40m [OK] [0m\n"; } if ($total_worker_count > \Man\Core\Master::SERVER_MAX_WORKER_COUNT) { \Man\Core\Master::notice("Number of worker processes can not be greater than " . \Man\Core\Master::SERVER_MAX_WORKER_COUNT . ".\tPlease check start_workers in " . WORKERMAN_ROOT_DIR . "config/main.php\tWorkerman start fail"); exit("\n[31;40mNumber of worker processes can not be greater than " . \Man\Core\Master::SERVER_MAX_WORKER_COUNT . ".\nPlease check start_workers in " . WORKERMAN_ROOT_DIR . "config/main.php[0m\n\n[31;40mWorkerman start fail[0m\n"); } echo "----------------------------------------------------------------\n"; }
/** * 检查worker配置、worker语法错误等 * @return void */ public static function checkWorkersConfig() { foreach (Config::getAllWorkers() as $worker_name => $config) { if (strlen($worker_name) > self::$maxWorkerNameLength) { self::$maxWorkerNameLength = strlen($worker_name); } if (isset($config['user']) && strlen($config['user']) > self::$maxUserNameLength) { self::$maxUserNameLength = strlen($config['user']); } if (isset($config['listen']) && strlen($config['listen']) > self::$maxListenLength) { self::$maxListenLength = strlen($config['listen']); } } $total_worker_count = 0; // 检查worker echo "------------------------ WORKERS -------------------------------\n"; echo "worker", str_pad('', self::$maxWorkerNameLength + 2 - strlen('worker')), "listen", str_pad('', self::$maxListenLength + 2 - strlen('listen')), "processes", str_pad('', self::$maxProcessCountLength + 2 - strlen('processes')), "", "status\n"; foreach (Config::getAllWorkers() as $worker_name => $config) { echo str_pad($worker_name, self::$maxWorkerNameLength + 2); if (isset($config['listen'])) { echo str_pad($config['listen'], self::$maxListenLength + 2); } else { echo str_pad('none', self::$maxListenLength + 2); } if (empty($config['start_workers'])) { \Man\Core\Master::notice(str_pad($worker_name, 40) . " [start_workers not set]\tWorkerman start fail"); exit(str_pad('', self::$maxProcessCountLength + 2) . " [start_workers not set]\n\nWorkerman start fail\n"); } echo str_pad(' ' . $config['start_workers'], self::$maxProcessCountLength + 2); $total_worker_count += $config['start_workers']; // 语法检查 if (!($worker_file = \Man\Core\Lib\Config::get($worker_name . '.worker_file'))) { \Man\Core\Master::notice("{$worker_name} not set worker_file in conf/conf.d/{$worker_name}.conf"); echo " [not set worker_file] \n"; continue; } echo " [OK] \n"; } if ($total_worker_count > \Man\Core\Master::SERVER_MAX_WORKER_COUNT) { \Man\Core\Master::notice("Number of worker processes can not be greater than " . \Man\Core\Master::SERVER_MAX_WORKER_COUNT . ".\tPlease check start_workers in " . WORKERMAN_ROOT_DIR . "config/main.php\tWorkerman start fail"); exit("\nNumber of worker processes can not be greater than " . \Man\Core\Master::SERVER_MAX_WORKER_COUNT . ".\nPlease check start_workers in " . WORKERMAN_ROOT_DIR . "config/main.php\n\nWorkerman start fail\n"); } echo "----------------------------------------------------------------\n"; }