예제 #1
0
 public function Bootstrap()
 {
     /** @var array $servicesConfig */
     $servicesConfig = (include DI_REGISTRY_PATH . '/Server.php');
     Application::AutoRegistry($servicesConfig);
     $this->setAlias();
 }
예제 #2
0
 /**
  * 进程启动时被触发
  *
  * @param \swoole_server $server    当前进程的swoole_server对象
  * @param int            $worker_id 当前进程的ID
  */
 public function OnWorkerStart(\swoole_server $server, $worker_id)
 {
     Log::Notice("On Worker[{$worker_id}] Start.");
     $workerStrapps = (include Application::GetFrameworkPath() . '/Registry/Worker.php');
     Application::AutoRegistry($workerStrapps);
     Event::Listen('OnWorkerStart', [&$server, &$worker_id]);
 }
예제 #3
0
 /**
  * 进程启动时被触发
  *
  * @param \swoole_server $server    当前进程的swoole_server对象
  * @param int            $worker_id 当前进程的ID
  */
 public function OnTaskWorkerStart(\swoole_server $server, $task_worker_id)
 {
     Log::Notice("On Task Worker[{$task_worker_id}] Start.");
     if (file_exists(Application::GetServerPath() . '/Registry/TaskWorker.php')) {
         $registry = (include Application::GetServerPath() . '/Registry/TaskWorker.php');
         Application::AutoRegistry($registry);
     }
     Event::Listen('OnTaskWorkerStart', [&$server, &$task_worker_id]);
 }
예제 #4
0
 /**
  * Worker进程启动时触发并划分普通worker进程和task进程
  *
  * @param \swoole_server $server
  * @param int            $worker_id
  *
  * @throws \DIServer\Container\NotRegistedException
  * @throws \DIServer\Container\NotTypeOfInstanceException
  */
 public function OnWorkerStart(\swoole_server $server, $worker_id)
 {
     //清理opcache
     opcache_reset();
     //各个进程的$server对象不是同一个,要重置。
     Container::Unregister(\swoole_server::class);
     Container::RegisterClassByInstance(\swoole_server::class, $server);
     Application::AutoRegistry('CommonWorker.php', true);
     if ($server->taskworker) {
         $this->taskerServer = Container::GetInstance(ITaskWorkerServer::class);
         Application::AutoRegistry('TaskWorker.php', true);
         Event::Listen('OnTaskWorkerStart', [&$server, &$worker_id]);
         $this->taskerServer->OnTaskWorkerStart($server, $worker_id);
     } else {
         $this->workerServer = Container::GetInstance(IWorkerServer::class);
         Application::AutoRegistry('Worker.php', true);
         Event::Listen('OnWorkerStart', [&$server, &$worker_id]);
         $this->workerServer->OnWorkerStart($server, $worker_id);
     }
 }