PHP Singleton как CallBack для HTTP-запроса на HTTP-сервере - PullRequest
0 голосов
/ 27 апреля 2020

Я хочу знать, будут ли какие-либо проблемы, связанные с синхронизацией / параллелизмом? если мы обслуживаем событие «request» (в HTTP Server, как swoole), используя «Singleton» в качестве «обратного вызова к событию request». Другими словами, обратный вызов, который обслуживает запрос, сначала создает объект синглтона (если он еще не существует.

Я создаю синглтон по событию «запрос» HTTP-сервера (Swoole). Член stati c который используется для создания отдельного экземпляра, также вызывает элемент non-stati c (того же самого) объекта singleton, кроме того, этот элемент non-stati c фактически обслуживает запрос.

$http->on('request', 'Bootstrap::getInstance');

// Синглтон

class Bootstrap{

  protected static $instance;

  private function __constructor(){  
         //initialize Phalcon Micro Routers and Events to fuse with Swoole
  } 

  public static getInstance($htpRequest, $httpResponse) {
       if (!$instance) { 
         self::$instance = new Bootstrap();
       }
       //Also call the non-static member to serve "request"
       self::instance->run($htpRequest, $httpResponse);
    }

  //non-static function to serve request
  public function run(httpRequest, httpResponse) {
      // Serve Request
  }

}
...