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

composer gatewayworker自定義協(xié)議報錯

MicroStudio

gatewayworker自定義通訊協(xié)議報錯

報錯信息:

E:\Php\app_sms>php application\worker\start_register.php application\worker\start_gateway.php application\worker\start_businessworker.php
----------------------- WORKERMAN -----------------------------
Workerman version:4.0.12 PHP version:7.3.21
------------------------ WORKERS -------------------------------
worker listen processes status
Register text://0.0.0.0:1238 1 [ok]

Fatal error: Uncaught Exception: class \Protocols\Sms not exist in E:\Php\app_sms\vendor\workerman\workerman\Worker.php:2319
Stack trace:
.#0 E:\Php\app_sms\vendor\workerman\workerman\Worker.php(2212): Workerman\Worker->parseSocketAddress()
.#1 E:\Php\app_sms\vendor\workerman\gateway-worker\src\Gateway.php(239): Workerman\Worker->__construct('sms://0.0.0.0:8...', Array)
.#2 E:\Php\app_sms\application\worker\start_gateway.php(24): GatewayWorker\Gateway->__construct('sms://0.0.0.0:8...')
.#3 {main}
thrown in E:\Php\app_sms\vendor\workerman\workerman\Worker.php on line 2319
SmsBusinessWorker none 4 [ok]
process E:\Php\app_sms\application\worker\start_gateway.php terminated and try to restart

版本信息:

E:\Php\app_sms>composer show workerman/gateway-worker -i
You are using the deprecated option "installed". Only installed packages are shown by default now. The --all option can be used to show all packages.
name : workerman/gateway-worker
descrip. :
keywords : communication, distributed
versions : * v3.0.18
type : library
license : MIT License (MIT) (OSI approved) https://spdx.org/licenses/MIT.html#licenseText
homepage : http://www.wtbis.cn
source : [git] https://github.com/walkor/GatewayWorker.git 50d3a77deb7f7fb206d641ee0307ae1c41d5d41d
dist : [zip] https://api.github.com/repos/walkor/GatewayWorker/zipball/50d3a77deb7f7fb206d641ee0307ae1c41d5d41d 50d3a77deb7f7fb206d641ee0307ae1c41d5d41d
path : E:\Php\app_sms\vendor\workerman\gateway-worker
names : workerman/gateway-worker

autoload
psr-4
GatewayWorker\ => ./src

requires
workerman/workerman >=3.5.0

E:\Php\app_sms>composer show workerman/workerman -i
You are using the deprecated option "installed". Only installed packages are shown by default now. The --all option can be used to show all packages.
name : workerman/workerman
descrip. : An asynchronous event driven PHP framework for easily building fast, scalable network applications.
keywords : asynchronous, event-loop
versions : * v4.0.12
type : library
license : MIT License (MIT) (OSI approved) https://spdx.org/licenses/MIT.html#licenseText
homepage : http://www.wtbis.cn
source : [git] https://github.com/walkor/Workerman.git 34abfc8550d669965b8a157001fe23a9785fdefc
dist : [zip] https://api.github.com/repos/walkor/Workerman/zipball/34abfc8550d669965b8a157001fe23a9785fdefc 34abfc8550d669965b8a157001fe23a9785fdefc
path : E:\Php\app_sms\vendor\workerman\workerman
names : workerman/workerman

autoload
psr-4
Workerman\ => ./

requires
php >=5.3

suggests
ext-event For better performance.

E:\Php\app_sms>

目錄結(jié)構(gòu):

截圖

另外我之前有一個類似項目,但是workerman的版本號時v4.0.10,工作正常,自定義的通訊協(xié)議正常工作。我把之前項目vendor/workerman/目錄復(fù)制到新項目中替換掉新項目也能正常工作了。但是還是想知道新版本怎么樣解決這個問題....

3367 2 0
2個回答

MicroStudio

我自己暫時解決辦法是:
1.composer create-project topthink/think=5.1. web_sms
2.composer require workerman/gateway-worker
3.composer require workerman/workerman 4.0.10
通過composer正常安裝后,再將workerman版本降級到4.0.10。雖然現(xiàn)在能正常使用,但是感覺這樣不妥,不知道4.0.13是不是對自定義通訊協(xié)議實現(xiàn)方式是否有變更,現(xiàn)有找到的資料不知道如何解決,期待作者大佬幫忙解決一下。

  • 暫無評論
walkor 打賞

更新到4.0.14或者以后的更高版本試下

  • MicroStudio 2020-10-18

    更新到4.0.14問題解決了,感謝!我看現(xiàn)在composer workerman/gateway-worker 關(guān)聯(lián)的workerman版本也更新到4.0.14了。
    另外能否請教一個問題,就是自定義通訊協(xié)議時在input方法內(nèi),我如果判定首字節(jié)不符合報文規(guī)范想拋棄掉此部分數(shù)據(jù)但是又不想讓連接斷開應(yīng)該如何做呢。

  • walkor 2020-10-19

    如果你知道拋棄多少字節(jié)的數(shù)據(jù)的話,用$connection->consumeRecvBuffer($length)來拋棄數(shù)據(jù)。拋棄完之后如果buffer還有數(shù)據(jù),重新手動調(diào)用input方法,并返回它的返回值,否則返回0

  • MicroStudio 2020-10-19

    額·不好意思還請教一下,就是如何手動調(diào)用input方法呢?我處理完$buffer中的數(shù)據(jù)后直接使用self::input($buffer,$connection);嗎?

  • walkor 2020-10-19

    先把拋棄的部分從$buffer里去掉,然后再調(diào)用self::input($buffer,$connection);

  • MicroStudio 2020-10-19

    嗯嗯,明白了。感謝感謝!

年代過于久遠,無法發(fā)表回答
??