1、在putty上直接前端啟動(dòng),php start.php start;一切正常,使用control + C 關(guān)閉也正常。
2、在putty上啟動(dòng)后臺(tái)運(yùn)行,php start.php start -D;啟動(dòng)正常,執(zhí)行php start.php status或者 stop ,都匯報(bào) 監(jiān)聽(tīng)的端口已被占用的錯(cuò)誤。
3、在前臺(tái)運(yùn)行的情況下,在woker的onmessage 中讀取msql正常。
在后臺(tái)運(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)程退出了,退出的原因可能是你在啟動(dòng)腳本里進(jìn)行了一些邏輯處理產(chǎn)生了錯(cuò)誤導(dǎo)致進(jìn)程退出。
不要在啟動(dòng)腳本直接寫(xiě)業(yè)務(wù)邏輯,業(yè)務(wù)邏輯放到onXXX回調(diào)里寫(xiě)。
根據(jù)描述3的現(xiàn)象來(lái)判斷,還是你在啟動(dòng)腳本里直接初始化了數(shù)據(jù)庫(kù)連接或者其他連接資源,數(shù)據(jù)庫(kù)、redis等應(yīng)該在onXX回調(diào)里初始化。啟動(dòng)腳本里直接初始化數(shù)據(jù)庫(kù)或者redis等資源,子進(jìn)程會(huì)繼承這些資源,導(dǎo)致互相收到影響。
看下workerman.log日志,日志沒(méi)有明確內(nèi)容時(shí)打開(kāi)php.ini中的error_log,看error_log的日志。
或者將業(yè)務(wù)代碼一半一半的注釋掉,直到找到問(wèn)題因?yàn)閱?wèn)題的代碼。
1、從新在后臺(tái)運(yùn)行,看起來(lái)workerman的各進(jìn)程應(yīng)該都正常啊,
2、執(zhí)行 status查詢(xún)還是有錯(cuò)誤
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
找到原因了,因?yàn)榇饲笆褂脀orkerman的老版本,
創(chuàng)建worker后,會(huì)執(zhí)行 $worker->listen(); 命令,在老版本沒(méi)問(wèn)題。
在新版本上執(zhí)行 $worker->listen();命令會(huì)導(dǎo)致端口被占用的錯(cuò)誤。
出現(xiàn)這種錯(cuò)誤,耽誤了1天時(shí)間,真是讓人苦笑不得