我想知道是否会有任何同步/并发相关的问题?如果我们使用“Singleton”作为“对请求事件的回调”来提供“请求”事件(在 HTTP Server 中,如 swoole)。换句话说,服务于请求的回调首先创建一个单例对象(如果它不存在的话。
我在 HTTP 服务器(Swoole)的“请求”事件上创建单例。此外,用于创建单个实例的静态成员还调用(相同)单例对象的非静态成员。这个非静态成员实际上服务于请求。
$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
}
}