1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- <?php
- declare(strict_types=1);
- /**
- * This file is part of Hyperf.
- *
- * @link https://www.hyperf.io
- * @document https://hyperf.wiki
- * @contact group@hyperf.io
- * @license https://github.com/hyperf/hyperf/blob/master/LICENSE
- */
- namespace Hyperf\Framework\Bootstrap;
- use Hyperf\Contract\StdoutLoggerInterface;
- use Hyperf\Coordinator\Constants;
- use Hyperf\Coordinator\CoordinatorManager;
- use Hyperf\Framework\Event\AfterWorkerStart;
- use Hyperf\Framework\Event\BeforeWorkerStart;
- use Hyperf\Framework\Event\MainWorkerStart;
- use Hyperf\Framework\Event\OtherWorkerStart;
- use Psr\EventDispatcher\EventDispatcherInterface;
- use Swoole\Server as SwooleServer;
- class WorkerStartCallback
- {
- public function __construct(protected EventDispatcherInterface $dispatcher, protected StdoutLoggerInterface $logger)
- {
- }
- /**
- * Handle Swoole onWorkerStart event.
- */
- public function onWorkerStart(SwooleServer $server, int $workerId)
- {
- $this->dispatcher->dispatch(new BeforeWorkerStart($server, $workerId));
- if ($workerId === 0) {
- $this->dispatcher->dispatch(new MainWorkerStart($server, $workerId));
- } else {
- $this->dispatcher->dispatch(new OtherWorkerStart($server, $workerId));
- }
- if ($server->taskworker) {
- $this->logger->info("TaskWorker#{$workerId} started.");
- } else {
- $this->logger->info("Worker#{$workerId} started.");
- }
- $this->dispatcher->dispatch(new AfterWorkerStart($server, $workerId));
- CoordinatorManager::until(Constants::WORKER_START)->resume();
- }
- }
|