This commit is contained in:
2021-02-20 15:21:42 +08:00
parent 60805d5f4c
commit 52bf002be5
14 changed files with 20 additions and 46 deletions
+2 -2
View File
@@ -70,8 +70,8 @@ class Connection extends Component
public function init()
{
$event = Snowflake::app()->getEvent();
$event->on(Event::RELEASE_ALL, [$this, 'disconnect']);
$event->on(Event::EVENT_AFTER_REQUEST, [$this, 'clear_connection']);
$event->on(Event::SYSTEM_RESOURCE_CLEAN, [$this, 'disconnect']);
$event->on(Event::SYSTEM_RESOURCE_RELEASES, [$this, 'clear_connection']);
}
+1 -1
View File
@@ -182,7 +182,7 @@ class Pagination extends Component
$this->addError($exception->getMessage());
} finally {
$event = Snowflake::app()->getEvent();
$event->trigger(Event::EVENT_AFTER_REQUEST);
$event->trigger(Event::SYSTEM_RESOURCE_RELEASES);
$this->_group->done();
}
}, $callback, $data, $param);
+1
View File
@@ -41,6 +41,7 @@ abstract class Callback extends Application
$event = Snowflake::app()->getEvent();
$event->offName(Event::EVENT_AFTER_REQUEST);
$event->offName(Event::SYSTEM_RESOURCE_RELEASES);
$event->offName(Event::EVENT_BEFORE_REQUEST);
$this->eventNotify($message, $event);
} catch (\Throwable $exception) {
-13
View File
@@ -4,25 +4,12 @@ declare(strict_types=1);
namespace HttpServer;
use Database\DatabasesProviders;
use HttpServer\Client\Client;
use HttpServer\Client\Curl;
use HttpServer\Client\Http2;
use HttpServer\Http\HttpHeaders;
use HttpServer\Http\HttpParams;
use HttpServer\Http\Request;
use Exception;
use HttpServer\Route\Router;
use Kafka\Producer;
use Snowflake\Abstracts\BaseGoto;
use Snowflake\Abstracts\TraitApplication;
use Snowflake\Cache\Redis;
use Snowflake\Error\Logger;
use Snowflake\Event;
use Snowflake\Exception\ComponentException;
use Snowflake\Jwt\Jwt;
use Snowflake\Pool\Connection;
use Snowflake\Pool\Pool as SPool;
use Snowflake\Snowflake;
/**
+1 -3
View File
@@ -31,10 +31,8 @@ class OnClose extends Callback
*/
public function onHandler(Server $server, int $fd)
{
Coroutine::defer(function () {
fire(Event::EVENT_AFTER_REQUEST);
});
$this->execute($server, $fd);
fire(Event::SYSTEM_RESOURCE_RELEASES);
}
+1 -3
View File
@@ -87,10 +87,8 @@ class OnHandshake extends Callback
*/
public function onHandler(SRequest $request, SResponse $response): void
{
Coroutine::defer(function () {
fire(Event::EVENT_AFTER_REQUEST);
});
$this->execute($request, $response);
fire(Event::SYSTEM_RESOURCE_RELEASES);
}
+1 -10
View File
@@ -28,7 +28,6 @@ class OnMessage extends Callback
*/
public function onHandler(Server $server, Frame $frame)
{
Coroutine::defer([$this, 'onAfter']);
try {
if ($frame->opcode != 0x08) {
$event = Snowflake::app()->getEvent();
@@ -41,19 +40,11 @@ class OnMessage extends Callback
$this->addError($exception->getMessage(), 'websocket');
$server->send($frame->fd, $exception->getMessage());
} finally {
fire(Event::SYSTEM_RESOURCE_RELEASES);
logger()->insert();
}
}
/**
* @throws ComponentException
*/
public function onAfter()
{
fire(Event::EVENT_AFTER_REQUEST);
}
/**
* @param $event
* @param $frame
+3 -4
View File
@@ -35,10 +35,6 @@ class OnRequest extends Callback
*/
public function onHandler(Request $request, Response $response): mixed
{
defer(function () use ($request) {
write(Json::encode(get_object_vars($request)), 'request');
fire(Event::EVENT_AFTER_REQUEST);
});
try {
[$req, $rep] = static::create($request, $response);
if ($req->is('favicon.ico')) {
@@ -50,6 +46,9 @@ class OnRequest extends Callback
return \send($exception->getMessage(), $exception->getCode());
}
return $this->sendErrorMessage($exception);
} finally {
write(Json::encode(get_object_vars($request)), 'request');
fire(Event::SYSTEM_RESOURCE_RELEASES);
}
}
+1 -1
View File
@@ -109,7 +109,7 @@ class OnTask extends Callback
$this->error($exception, 'Task');
} finally {
$event = Snowflake::app()->getEvent();
$event->trigger(Event::RELEASE_ALL);
$event->trigger(Event::SYSTEM_RESOURCE_CLEAN);
Timer::clearAll();
}
return $finish;
-2
View File
@@ -40,8 +40,6 @@ class Reduce
return $pipe->onHandler($request, $passable);
} catch (\Throwable $throwable) {
return Json::to(0, $throwable);
} finally {
fire(Event::EVENT_AFTER_REQUEST);
}
};
});
+1 -1
View File
@@ -89,7 +89,7 @@ class Producer extends Component
});
$event = Snowflake::app()->getEvent();
$event->on(Event::EVENT_AFTER_REQUEST, [$this, 'flush']);
$event->on(Event::SYSTEM_RESOURCE_RELEASES, [$this, 'flush']);
if ($this->producer === null) {
$this->producer = Snowflake::createObject(\RdKafka\Producer::class, [$this->conf]);
+2 -2
View File
@@ -37,8 +37,8 @@ class Redis extends Component
public function init()
{
$event = Snowflake::app()->getEvent();
$event->on(Event::RELEASE_ALL, [$this, 'destroy']);
$event->on(Event::EVENT_AFTER_REQUEST, [$this, 'release']);
$event->on(Event::SYSTEM_RESOURCE_CLEAN, [$this, 'destroy']);
$event->on(Event::SYSTEM_RESOURCE_RELEASES, [$this, 'release']);
$event->on(Event::SERVER_WORKER_START, [$this, 'createPool']);
$event->on(Event::SERVER_TASK_START, [$this, 'createPool']);
}
+2 -2
View File
@@ -75,7 +75,7 @@ class ErrorHandler extends Component implements ErrorInterface
$this->category = 'exception';
$event = Snowflake::app()->getEvent();
$event->trigger(Event::RELEASE_ALL);
$event->trigger(Event::SYSTEM_RESOURCE_CLEAN);
$this->sendError($exception->getMessage(), $exception->getFile(), $exception->getLine());
}
@@ -103,7 +103,7 @@ class ErrorHandler extends Component implements ErrorInterface
logger()->error($data, 'error');
$event = Snowflake::app()->getEvent();
$event->trigger(Event::RELEASE_ALL);
$event->trigger(Event::SYSTEM_RESOURCE_CLEAN);
throw new \ErrorException($error[1], $error[0], 1, $error[2], $error[3]);
}
+4 -2
View File
@@ -31,9 +31,11 @@ class Event extends BaseObject
const RECEIVE_CONNECTION = 'SERVER:RECEIVE:CONNECTION';
const PROCESS_WORKER_STOP = 'SERVER:PROCESS:WORKER:STOP';
const SYSTEM_RESOURCE_RELEASES = 'SYSTEM::RESOURCE::RELEASES';
const SYSTEM_RESOURCE_CLEAN = 'SYSTEM::RESOURCE::CLEAN';
const RELEASE_ALL = 'SERVER:RELEASE:ALL';
const PROCESS_WORKER_STOP = 'SERVER:PROCESS:WORKER:STOP';
const SERVER_AFTER_RELOAD = 'SERVER:AFTER:RELOAD';
const SERVER_BEFORE_RELOAD = 'SERVER:BEFORE:RELOAD';