Worker进程

Swoole提供了完善的进程管理机制,当Worker进程异常退出,如发生PHP的致命错误、被其他程序误杀,或达到max_request次数之后正常退出。主进程会重新拉起新的Worker进程。 Worker进程内可以像普通的apache+php或者php-fpm中写代码。不需要像Node.js那样写异步回调的代码。

主进程内的回调函数

  • onStart
  • onShutdown

Worker进程内的回调函数

  • onWorkerStart
  • onWorkerStop
  • onConnect
  • onClose
  • onReceive
  • onFinish

TaskWorker进程内的回调函数

  • onTask
  • onWorkerStart

管理进程内的回调函数

  • onManagerStart
  • onManagerStop


  • Bingo

    请问一下,执行一段时间后,worker进程内存占用明显提升了

  • selbstkennen梁晨

    看看是否一些静态变量或者数组是否没有释放? 检查下依赖的扩展是否有内存泄露(valgrind)?

  • 图图亚雷

    为什么worker正常退出主进程会重新拉起新的Worker进程?难道Worker进程是manager管理的?

  • 红豆先生

    @图图亚雷 worker进程确实是由manager管理和维护的

  • か

    我也遇到了内存明显提升的问题,包括swoft框架和自己的框架,解决方法是设置ini_set('memory_limit', 'xxx');超过内存后会触发Fatal error,然后worker进程被manger回收后又拉起继续运行。 在定时器中创建携程增长的特别快

    比如下面这个代码放在onWorkerStart中:

    swoole_timer_tick(100,function(){ go(function () { echo (memory_get_usage() / 1024) . "\n"; }); });