在SWOOLE模式下建议开启协程异步编程模式(用 rapphp最正确的姿势) ``` 'swoole_http'=>[ 'coroutine'=>true//使用协程进行异步编程 ] ``` ### 协程注意事项 ***** 使用前建议你充分了解进程,线程,协程各个是什么东西,然后充分认识,异步编程和传统的 php 编程之间的区别 >因为数据库连接池的存在, 特别注意 Connection 对象不能注入到对象内,不然拿到的数据库连接会出错,导致严重的问题 记住 swoole 是内存型的所有对像在内存里(特别是 IOC 托管的对象),不会重复创建和销毁, 所以同一个对象中的 属性 可能会同时被多个用户的访问同时 访问到,并且当用户的一次访问结束时 对象的属性也不会别销毁(被 new 出来的对象,左右域只在方法内的对象没有问题啊) 下面的写法是绝对错的 ``` class ContentService { private $contentList; public function listContent(){ $this->contentList= Content::select()->limit(1,10)->findAll(); } public function renderContentUser(){ foreach ($this->contentList as $content) { $content['user']=User::get($content->id); } } } class TestController{ private $contentService; public function _initialize(ContentService $contentService) { $this->contentService = $contentService; } public function test(){ $contents=$this->contentService->listContent(); $this->contentService->renderContentUser(); return $contents; } } ```