1、在putty上直接前端啟動,php start.php start;一切正常,使用control + C 關(guān)閉也正常。
2、在putty上啟動后臺運(yùn)行,php start.php start -D;啟動正常,執(zhí)行php start.php status或者 stop ,都匯報 監(jiān)聽的端口已被占用的錯誤。
3、在前臺運(yùn)行的情況下,在woker的onmessage 中讀取msql正常。
在后臺運(yùn)行的情況下,在woker的onmessage 中讀取msql異常。
msql句柄在woker的onstart 中創(chuàng)建。
stream_socket_server(): unable to connect to tcp://0.0.0.0:5678 (Address already in use)
當(dāng)前環(huán)境,ubuntu18、wokerman 最新版本,php8.0,mysql3.7
根據(jù)描述2應(yīng)該是主進(jìn)程退出了,退出的原因可能是你在啟動腳本里進(jìn)行了一些邏輯處理產(chǎn)生了錯誤導(dǎo)致進(jìn)程退出。
不要在啟動腳本直接寫業(yè)務(wù)邏輯,業(yè)務(wù)邏輯放到onXXX回調(diào)里寫。
根據(jù)描述3的現(xiàn)象來判斷,還是你在啟動腳本里直接初始化了數(shù)據(jù)庫連接或者其他連接資源,數(shù)據(jù)庫、redis等應(yīng)該在onXX回調(diào)里初始化。啟動腳本里直接初始化數(shù)據(jù)庫或者redis等資源,子進(jìn)程會繼承這些資源,導(dǎo)致互相收到影響。
看下workerman.log日志,日志沒有明確內(nèi)容時打開php.ini中的error_log,看error_log的日志。
或者將業(yè)務(wù)代碼一半一半的注釋掉,直到找到問題因為問題的代碼。
1、從新在后臺運(yùn)行,看起來workerman的各進(jìn)程應(yīng)該都正常啊,
2、執(zhí)行 status查詢還是有錯誤
PHP Warning: stream_socket_server(): Unable to connect to tcp://0.0.0.0:6569 (Address already in use) in /home/forex/forex-v3/vendor/workerman/workerman/Worker.php on line 2360
Warning: stream_socket_server(): Unable to connect to tcp://0.0.0.0:6569 (Address already in use) in /home/forex/forex-v3/vendor/workerman/workerman/Worker.php on line 2360
PHP Fatal error: Uncaught Exception: Address already in use in /home/forex/forex-v3/vendor/workerman/workerman/Worker.php:2362
Stack trace:
thrown in /home/forex/forex-v3/vendor/workerman/workerman/Worker.php on line 2362
Fatal error: Uncaught Exception: Address already in use in /home/forex/forex-v3/vendor/workerman/workerman/Worker.php:2362
Stack trace:
thrown in /home/forex/forex-v3/vendor/workerman/workerman/Worker.php on line 2362