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

onWorkerError

Swoole使用C/C++ 11编写,不依赖其他第三方库。

  • swoole并没有用libevent,所以不需要安装libevent
  • swoole并不依赖php的stream/sockets/pcntl/posix/sysvmsg等扩展

socket部分

swoole使用底层的socket系统调用。参见 sys/socket.h

IO事件循环

  • Linux系统下使用epoll,‵MacOS/FreeBSD下使用kqueue`
  • task进程没有事件循环,进程会循环阻塞读取管道

有很多人使用strace -p去查看swoole主进程只能看到poll系统调用。正确的查看方法是strace -f -p

多进程/多线程

  • 多进程使用fork()系统调用
  • 多线程使用pthread线程库

EventFd

Swoole使用了eventfd作为线程/进程间消息通知的机制。

SIgnalfd

Swoole中使用了signalfd来实现对信号的屏蔽和处理。可以有效地避免线程/进程被信号打断,系统调用restart的问题。在主进程中Reactor/AIO线程不会接受任何信号。


  • ucpuw

    这边提到发生异常会回调此函数 请问可举例有哪些异常会回调吗 我测试很多异常都不会回调

  • Durant.Lin

    同上,SD框架,"exit_code":0,什么原因?

  • Rango

    @Durant.Lin 文档存在错误,已修正。exit_code0说明是正常退出,请检查signal

  • か

    刚踩坑:onStart回调里面的错误不会出发onWorkerError

  • 跨省少年

    onWorkerStart里面会不会触发?