This commit is contained in:
xl
2024-11-18 16:35:37 +08:00
parent d9980e9e1b
commit 23110643e0
+17 -5
View File
@@ -6,6 +6,7 @@ use Kiri;
use Kiri\Abstracts\CoordinatorManager; use Kiri\Abstracts\CoordinatorManager;
use Kiri\Coordinator; use Kiri\Coordinator;
use Kiri\Core\Help; use Kiri\Core\Help;
use Kiri\Di\Inject\Container;
use Kiri\Events\EventDispatch; use Kiri\Events\EventDispatch;
use Kiri\Server\Events\OnAfterWorkerStart; use Kiri\Server\Events\OnAfterWorkerStart;
use Kiri\Server\Events\OnBeforeWorkerStart; use Kiri\Server\Events\OnBeforeWorkerStart;
@@ -28,6 +29,14 @@ use function config;
class OnServerWorker extends Kiri\Server\Abstracts\Server class OnServerWorker extends Kiri\Server\Abstracts\Server
{ {
/**
* @var EventDispatch
*/
#[Container(EventDispatch::class)]
public EventDispatch $dispatch;
/** /**
* @return void * @return void
*/ */
@@ -62,16 +71,15 @@ class OnServerWorker extends Kiri\Server\Abstracts\Server
*/ */
public function onWorkerStart(Server $server, int $workerId): void public function onWorkerStart(Server $server, int $workerId): void
{ {
$dispatch = Kiri::getDi()->get(EventDispatch::class); $this->dispatch->dispatch(new OnBeforeWorkerStart($server, $workerId));
$dispatch->dispatch(new OnBeforeWorkerStart($server, $workerId));
if ($workerId < $server->setting['worker_num']) { if ($workerId < $server->setting['worker_num']) {
CoordinatorManager::utility(Coordinator::WORKER_START)->waite(); CoordinatorManager::utility(Coordinator::WORKER_START)->waite();
$dispatch->dispatch(new OnWorkerStart($server, $workerId)); $this->dispatch->dispatch(new OnWorkerStart($server, $workerId));
} else { } else {
$dispatch->dispatch(new OnTaskerStart($server, $workerId)); $this->dispatch->dispatch(new OnTaskerStart($server, $workerId));
} }
$dispatch->dispatch(new OnAfterWorkerStart($server, $workerId)); $this->dispatch->dispatch(new OnAfterWorkerStart($server, $workerId));
} }
@@ -93,6 +101,8 @@ class OnServerWorker extends Kiri\Server\Abstracts\Server
*/ */
public function onWorkerStop(Server $server, int $workerId): void public function onWorkerStop(Server $server, int $workerId): void
{ {
error(sprintf('Worker#%d::%d stop.',$server->worker_pid, $workerId));
event(new OnWorkerStop($server, $workerId)); event(new OnWorkerStop($server, $workerId));
Timer::clearAll(); Timer::clearAll();
} }
@@ -105,6 +115,8 @@ class OnServerWorker extends Kiri\Server\Abstracts\Server
*/ */
public function onWorkerExit(Server $server, int $workerId): void public function onWorkerExit(Server $server, int $workerId): void
{ {
error(sprintf('Worker#%d::%d exit.',$server->worker_pid, $workerId));
event(new OnWorkerExit($server, $workerId)); event(new OnWorkerExit($server, $workerId));
} }