改名
This commit is contained in:
+17
-6
@@ -3,13 +3,15 @@
|
|||||||
|
|
||||||
namespace Server;
|
namespace Server;
|
||||||
|
|
||||||
use Note\Inject;
|
|
||||||
use Exception;
|
use Exception;
|
||||||
use Http\Handler\Abstracts\HttpService;
|
use Http\Handler\Abstracts\HttpService;
|
||||||
use JetBrains\PhpStorm\Pure;
|
use JetBrains\PhpStorm\Pure;
|
||||||
use Kiri\Abstracts\Config;
|
use Kiri\Abstracts\Config;
|
||||||
use Kiri\Events\EventDispatch;
|
use Kiri\Events\EventDispatch;
|
||||||
use Kiri\Exception\ConfigException;
|
use Kiri\Exception\ConfigException;
|
||||||
|
use Note\Inject;
|
||||||
|
use Psr\Container\ContainerExceptionInterface;
|
||||||
|
use Psr\Container\NotFoundExceptionInterface;
|
||||||
use Server\Events\OnShutdown;
|
use Server\Events\OnShutdown;
|
||||||
|
|
||||||
|
|
||||||
@@ -41,6 +43,13 @@ class Server extends HttpService
|
|||||||
public EventDispatch $eventDispatch;
|
public EventDispatch $eventDispatch;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var State
|
||||||
|
*/
|
||||||
|
#[Inject(State::class)]
|
||||||
|
public State $state;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
@@ -59,10 +68,11 @@ class Server extends HttpService
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return string start server
|
* @return string
|
||||||
*
|
|
||||||
* start server
|
|
||||||
* @throws ConfigException
|
* @throws ConfigException
|
||||||
|
* @throws ContainerExceptionInterface
|
||||||
|
* @throws NotFoundExceptionInterface
|
||||||
|
* @throws \ReflectionException
|
||||||
* @throws Exception
|
* @throws Exception
|
||||||
*/
|
*/
|
||||||
public function start(): string
|
public function start(): string
|
||||||
@@ -94,7 +104,7 @@ class Server extends HttpService
|
|||||||
{
|
{
|
||||||
$configs = Config::get('server', [], true);
|
$configs = Config::get('server', [], true);
|
||||||
foreach ($this->manager->sortService($configs['ports'] ?? []) as $config) {
|
foreach ($this->manager->sortService($configs['ports'] ?? []) as $config) {
|
||||||
$this->manager->stopServer($config['port']);
|
$this->state->exit($config['port']);
|
||||||
}
|
}
|
||||||
$this->eventDispatch->dispatch(new OnShutdown());
|
$this->eventDispatch->dispatch(new OnShutdown());
|
||||||
}
|
}
|
||||||
@@ -103,10 +113,11 @@ class Server extends HttpService
|
|||||||
/**
|
/**
|
||||||
* @return bool
|
* @return bool
|
||||||
* @throws ConfigException
|
* @throws ConfigException
|
||||||
|
* @throws Exception
|
||||||
*/
|
*/
|
||||||
public function isRunner(): bool
|
public function isRunner(): bool
|
||||||
{
|
{
|
||||||
return $this->manager->isRunner();
|
return $this->state->isRunner();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+11
-33
@@ -52,10 +52,21 @@ class ServerManager
|
|||||||
public int $port = 0;
|
public int $port = 0;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var Logger
|
||||||
|
*/
|
||||||
#[Inject(Logger::class)]
|
#[Inject(Logger::class)]
|
||||||
public Logger $logger;
|
public Logger $logger;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var State
|
||||||
|
*/
|
||||||
|
#[Inject(State::class)]
|
||||||
|
public State $state;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/** @var array<string,Port> */
|
/** @var array<string,Port> */
|
||||||
public array $ports = [];
|
public array $ports = [];
|
||||||
|
|
||||||
@@ -149,23 +160,6 @@ class ServerManager
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return bool
|
|
||||||
* @throws ConfigException
|
|
||||||
* @throws Exception
|
|
||||||
*/
|
|
||||||
public function isRunner(): bool
|
|
||||||
{
|
|
||||||
$configs = Config::get('server', [], true);
|
|
||||||
foreach ($this->sortService($configs['ports']) as $config) {
|
|
||||||
if (checkPortIsAlready($config['port'])) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param string|OnProcessInterface|BaseProcess $customProcess
|
* @param string|OnProcessInterface|BaseProcess $customProcess
|
||||||
* @throws Exception
|
* @throws Exception
|
||||||
@@ -315,22 +309,6 @@ class ServerManager
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param int $port
|
|
||||||
* @throws Exception
|
|
||||||
*/
|
|
||||||
public function stopServer(int $port)
|
|
||||||
{
|
|
||||||
if (!($pid = checkPortIsAlready($port))) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
while (checkPortIsAlready($port)) {
|
|
||||||
Process::kill($pid, SIGTERM);
|
|
||||||
usleep(300);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param array $settings
|
* @param array $settings
|
||||||
* @throws ContainerExceptionInterface
|
* @throws ContainerExceptionInterface
|
||||||
|
|||||||
@@ -0,0 +1,56 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Server;
|
||||||
|
|
||||||
|
use Exception;
|
||||||
|
use Kiri\Abstracts\BaseObject;
|
||||||
|
use Kiri\Abstracts\Config;
|
||||||
|
use Swoole\Process;
|
||||||
|
|
||||||
|
class State extends BaseObject
|
||||||
|
{
|
||||||
|
|
||||||
|
use TraitServer;
|
||||||
|
|
||||||
|
|
||||||
|
public array $servers = [];
|
||||||
|
|
||||||
|
|
||||||
|
public function init()
|
||||||
|
{
|
||||||
|
$this->servers = Config::get('servers.ports');
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return bool
|
||||||
|
* @throws Exception
|
||||||
|
*/
|
||||||
|
public function isRunner(): bool
|
||||||
|
{
|
||||||
|
$ports = $this->sortService($this->servers);
|
||||||
|
foreach ($ports as $config) {
|
||||||
|
if (checkPortIsAlready($config['port'])) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param $port
|
||||||
|
* @throws Exception
|
||||||
|
*/
|
||||||
|
public function exit($port)
|
||||||
|
{
|
||||||
|
if (!($pid = checkPortIsAlready($port))) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
while (checkPortIsAlready($port)) {
|
||||||
|
Process::kill($pid, SIGTERM);
|
||||||
|
usleep(300);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user