diff --git a/HttpServer/Server.php b/HttpServer/Server.php index bb8026e2..89441635 100644 --- a/HttpServer/Server.php +++ b/HttpServer/Server.php @@ -60,6 +60,8 @@ class Server extends Application /** @var Http|Websocket|Packet|Receive */ private $baseServer; + public $daemon = 0; + /** * @param array $configs * @return Http|Packet|Receive|Websocket @@ -198,6 +200,20 @@ class Server extends Application } + /** + * @param $daemon + * @return Server + */ + public function setDaemon($daemon) + { + if (!in_array($daemon, [0, 1])) { + return $this; + } + $this->daemon = $daemon; + return $this; + } + + /** * @return Http|Websocket|Packet|Receive */ @@ -252,6 +268,7 @@ class Server extends Application if (!($this->baseServer instanceof \Swoole\Server)) { $class = $this->dispatch($config['type']); $this->baseServer = new $class($config['host'], $config['port'], SWOOLE_PROCESS, $config['mode']); + $settings['daemonize'] = $this->daemon; if (!isset($settings['pid_file'])) { $settings['pid_file'] = APP_PATH . 'storage/server.pid'; } diff --git a/System/Application.php b/System/Application.php index 0f1ff488..c71c2f50 100644 --- a/System/Application.php +++ b/System/Application.php @@ -71,6 +71,7 @@ class Application extends BaseApplication public function start(Input $argv) { $manager = Snowflake::app()->server; + $manager->setDaemon($argv->get('daemon', 0)); switch ($argv->get('action')) { case 'stop': $manager->shutdown();