provider/shell/StartUp.php (40 lines of code) (raw):

<?php /** * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace com\fenqile\fsof\provider\shell; use com\fenqile\fsof\common\config\FSOFConfigManager; use com\fenqile\fsof\provider\core\server\TcpServer; define("BIN_DIR", __DIR__); define('MYROOT',BIN_DIR."/../.."); require_once MYROOT . '/vendor/autoload.php'; require_once MYROOT . '/vendor/apache/log4php/src/main/php/Logger.php'; // 定义provider shell目录 define('FSOF_PROVIDER_SHELL_PATH', __DIR__); // 定义provider 根目录 define('FSOF_PROVIDER_ROOT_PATH', dirname(FSOF_PROVIDER_SHELL_PATH)); //定义FSOF框架根目录 define('FSOF_FRAMEWORK_ROOT_PATH', dirname(FSOF_PROVIDER_ROOT_PATH)); //提取cmd和 name $name = $argv[1]; $cmd = $argv[2]; if (empty($cmd) || empty($name)) { echo("please input cmd and server name!"); exit(1); } //log系统初始化需要用到appName,暂时以常量方式处理 if(!defined('FSOF_PROVIDER_APP_NAME')) define('FSOF_PROVIDER_APP_NAME', $name); //载入Provider 框架代码 require_once FSOF_PROVIDER_ROOT_PATH.DIRECTORY_SEPARATOR.'FSOFProvider.php'; //读取conf目录下的$name.deploy文件,然后启动对应的server if (($cmd != 'stop' && $cmd != 'reload' ) && !FSOFConfigManager::isProviderAppDeploy($name)) { echo "{$name} can not find deploy file or bootstrap.php".PHP_EOL; exit(1); } $config = FSOFConfigManager::getProviderAppDeploy($name); if(isset($config['server']['log_cfg_file_path']) && !empty($config['server']['log_cfg_file_path'])) { \Logger::configure($config['server']['log_cfg_file_path']); date_default_timezone_set('PRC'); } \Logger::getLogger(__CLASS__)->info("input {$cmd} {$name}"); $server = new TcpServer($name); //加载app root目录下的bootstrap.php和provider/$name.provider文件 $server->setRequire(FSOFConfigManager::getProviderAppRoot($name)); //app/conf目录下的$name.deploy文件 $server->loadConfig($config); //全局fsof.ini文件 $server->loadConfig(FSOFConfigManager::getFSOFIni()); //设置swoole扩展日志文件 $server->setSwooleLogFile($cmd); //provider启动时初始化consumer $server->initConsumer(); //初始化server资源 $server->initRunTime('/var/fsof/provider'); //启动 $server->run($cmd);