windows中使用swow协程的错误

luoyue

问题描述

我尝试在windows中使用swow发现无法运行。有几处报错。
分别从静态php和非静态php测试。

  • 静态php下只有两处错误。
  • 非静态php在两处错误的基础上出现了一个新bug。

程序代码

启用swow协程。
静态php下载地址:
https://static-php-cli.fra1.digitaloceanspaces.com/static-php-cli/windows/spc-max/php-8.3.15-cli-win.zip

报错信息

  • 第一处错误
    Warning: [Fatal error in R5] Uncaught TypeError: stream_poll_one(): supplied resource is not a valid stream resource in E:\workerman\api-v3\vendor\workerman\workerman\src\Events\Swow.php:192
    Stack trace:
    #0 E:\workerman\api-v3\vendor\workerman\workerman\src\Events\Swow.php(192): stream_poll_one(Resource id #365, 18)
    #1 [internal function]: Workerman\Events\Swow->Workerman\Events\{closure}()
    #2 {main}
  • 第二处错误
    Warning: [Fatal error in scheduler] Uncaught Error: Maximum call stack size of 212992 bytes (zend.max_allowed_stack_size - zend.reserved_stack_size) reached. Infinite recursion? in E:\workerman\api-v3\vendor\workerman\coroutine\src\Utils\DestructionWatcher.php:48
    Stack trace:
    #0 [internal function]: Workerman\Coroutine\Utils\DestructionWatcher->__destruct()
    #1 {main}
    thrown in E:\workerman\api-v3\vendor\workerman\coroutine\src\Utils\DestructionWatcher.php on line 48
  • 非静态php环境,监控进程无限重启
    截图

截图报错信息里报错文件相关代码

  • 第一处错误将错误行代码移动到下图位置可解决报错
    截图
  • 第二处错误将__destruct注释掉可暂时解决报错(好像是触发了无限回调,不太确定)
    截图

操作系统及workerman/webman等框架组件具体版本

windows 10
workerman: 5.1
webman: 2.1

40 1 0
1个回答

胡桃

Swow 一年没更新了,可以放弃了

  • 暂无评论
×
🔝