swoole中的对象创建与释放,请求隔离问题?

  • 最近在做 基于 swoole 的web开发框架, 本身用的是DI依赖注入,在onRequest回调中对路由进行解析,然后实例化控制器等操作。问题在于当请求1与请求2来的时候控制器内存没有被释放,导致2次请求用的是同一次内存中的对象。

  • 代码如下:

 // 变量解释 
 $app (这是一个单例)
 
 $server->on('request',function($request,$response) use($app){
     $uri = $request->server['request_uri'] ;
     list($controller,$action) = Route::parseUri($uri);
     $controller = $app->make($controller); // 该步骤会把controller绑定到$app上下次make直接获取到同一个对象
     $response->end( $controller->{$action}());
 })

// controller 
 class Controller {
   public $i = 0;
   public fucntion index(){
     $this->i ++ ;
     return $this->i ;
   }
 }
// 第一次 输出 1, 
// 第二次输出 2 ,

问:如何管理好对象的实例化与释放 不然每个请求对象长久的保存在内存中内存要爆炸啊。

阅读 4.1k
2 个回答

使用ob_start 和 ob_系列函数,另外,一些对象的实例,不需要的时候unset掉!

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏