国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

windows中使用swow協(xié)程的錯誤(已解決)

luoyue

問題描述

在onWorkerStart中使用數(shù)據(jù)庫連接池可能會堆棧異常。

程序代碼

啟用swow協(xié)程。在程序啟動后連接數(shù)據(jù)庫。
靜態(tài)php下載地址:
https://static-php-cli.fra1.digitaloceanspaces.com/static-php-cli/windows/spc-max/php-8.3.13-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

截圖報錯信息里報錯文件相關(guān)代碼

  • 第一處錯誤并不是代碼問題,我發(fā)現(xiàn)workerman倉庫中的src\Events\Swow.php和我的不一致導(dǎo)致的。
    我對比了版本號并重新使用composer安裝依然存在這個問題,我不清楚是不是composer的bug。
    我的代碼:
    截圖

  • 第二處錯誤經(jīng)過分析最終引發(fā)的異常為上下文未正確銷毀引發(fā)的無限遞歸調(diào)用。
    原因是我在bootstrap中使用了數(shù)據(jù)庫連接,在workerman中onWorkerStart開了一個協(xié)程處理,但是沒有銷毀上下文。所以才導(dǎo)致了這個bug。
    修復(fù)代碼如下:
    截圖

操作系統(tǒng)及workerman/webman等框架組件具體版本

windows 10
workerman: 5.1
webman: 2.1
webman/database:2.1.6
webman/redis: 2.1.3

537 1 1
1個回答

胡桃

Swow 一年沒更新了,可以放棄了

??