• 协程Coroutine
    • 协程注意事项

    协程Coroutine

    在SWOOLE模式下建议开启协程异步编程模式(用 rapphp最正确的姿势)

    1. 'swoole_http'=>[
    2. 'coroutine'=>true//使用协程进行异步编程
    3. ]

    协程注意事项


    使用前建议你充分了解进程,线程,协程各个是什么东西,然后充分认识,异步编程和传统的 php 编程之间的区别

    因为数据库连接池的存在, 特别注意 Connection 对象不能注入到对象内,不然拿到的数据库连接会出错,导致严重的问题

    记住 swoole 是内存型的所有对像在内存里(特别是 IOC 托管的对象),不会重复创建和销毁, 所以同一个对象中的 属性 可能会同时被多个用户的访问同时 访问到,并且当用户的一次访问结束时 对象的属性也不会别销毁(被 new 出来的对象,左右域只在方法内的对象没有问题啊)

    下面的写法是绝对错的

    1. class ContentService {
    2. private $contentList;
    3. public function listContent(){
    4. $this->contentList= Content::select()->limit(1,10)->findAll();
    5. }
    6. public function renderContentUser(){
    7. foreach ($this->contentList as $content) {
    8. $content['user']=User::get($content->id);
    9. }
    10. }
    11. }
    12. class TestController{
    13. private $contentService;
    14. public function _initialize(ContentService $contentService) {
    15. $this->contentService = $contentService;
    16. }
    17. public function test(){
    18. $contents=$this->contentService->listContent();
    19. $this->contentService->renderContentUser();
    20. return $contents;
    21. }
    22. }

    上一篇:WebSocketService   下一篇:Context上下文(重要)