From a241dddbd276d8c92df4bb9467d301fcbaf9d4c3 Mon Sep 17 00:00:00 2001 From: yggverse Date: Wed, 24 Apr 2024 00:22:44 +0300 Subject: [PATCH] add server stop method --- README.md | 8 ++++++++ src/Server.php | 41 ++++++++++++++++++++++++++++++++++++++--- 2 files changed, 46 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 5bc601e..489a4ed 100644 --- a/README.md +++ b/README.md @@ -61,6 +61,8 @@ $server = new \Yggverse\Nex\Server('127.0.0.1', 1915); #### Server::getPort #### Server::setSize #### Server::getSize +#### Server::setLive +#### Server::getLive #### Server::start @@ -82,3 +84,9 @@ $server->start( } ); ``` + +#### Server::stop + +Stop server instance. + +Same to `Server::setLive(false)` diff --git a/src/Server.php b/src/Server.php index 4b84947..3a49f68 100644 --- a/src/Server.php +++ b/src/Server.php @@ -7,11 +7,13 @@ class Server private string $_host; private int $_port; private int $_size; + private bool $_live; public function __construct( string $host = '127.0.0.1', int $port = 1915, - int $size = 1024 + int $size = 1024, + bool $live = true ) { $this->setHost( $host @@ -24,6 +26,10 @@ class Server $this->setSize( $size ); + + $this->setLive( + $live + ); } public function getHost(): string @@ -75,6 +81,18 @@ class Server $this->_size = $value; } + public function getLive(): bool + { + return $this->_live; + } + + public function setLive( + bool $value + ): void + { + $this->_live = $value; + } + public function start( ?callable $handler = null ): void @@ -90,8 +108,17 @@ class Server STREAM_SERVER_BIND | STREAM_SERVER_LISTEN ); - while ($socket) + do { + if (!$this->_live) + { + fclose( + $socket + ); + + break; + } + $incoming = stream_socket_accept( $socket, -1, $connect ); @@ -123,6 +150,14 @@ class Server fclose( $incoming ); - } + + } while ($this->_live); + } + + public function stop(): void + { + $this->setLive( + false + ); } }