• 编程须知
    • 编程范式
    • 扩展冲突
    • 严重错误

    编程须知

    使用Swoole协程特性,请认真阅读本页编程须知。

    编程范式

    • 协程内部禁止使用全局变量
    • 协程使用use关键字引入外部变量到当前作用域禁止使用引用
    • 协程之间通讯必须使用Channel
    即协程之间通讯不要使用全局变量或者引用外部变量到当前作用域,而要使用Channel
    • 项目中如果有扩展hookzend_execute_ex或者zend_execute_internal,需要特别注意一下c栈。可以使用co::set重新设置C栈大小
    hook这两个入口函数后,大部分情况下会把平坦的php指令调用变为C函数调用,增加c栈的消耗。

    扩展冲突

    由于某些跟踪调试的PHP扩展大量使用了全局变量可能会导致Swoole协程发生崩溃。请关闭这些相关扩展。

    包括4.02.0
    • xdebug
    • phptrace
    • aop
    • molten
    • xhprof
    • phalcon(Swoole协程无法运行在 phalcon 框架中)

    严重错误

    以下行为会导致出现严重错误。

    • 在多个协程间共用一个连接
    • 使用类静态变量/全局变量保存上下文