× 警告!旧版文档已经暂停维护,请查看新版文档。点击前往新版文档

编程须知

使用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 框架中)

调试工具可尝试 https://github.com/mabu233/sdebug, 基于 xdebug2.6 (仅限开发环境使用)

严重错误

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


  • foolishnoob

    是所有的aop都不允许使用吗?我集成了一个https://github.com/goaop/framework到swoole里面,有需要的请留言.