按官網(wǎng)例子寫的推送給設(shè)備端消息,運(yùn)行一段時(shí)間后,
$client = stream_socket_client('tcp://127.0.0.1:5678', $errno, $errmsg, 1);
fwrite($client, json_encode($data)."\n");
$res = fread($client, 8192);
使用平臺(tái)為L(zhǎng)INUX ,調(diào)試發(fā)現(xiàn)這個(gè)推送消息給設(shè)備會(huì)出現(xiàn)阻塞,具體原因目前沒查到,狀況為心跳正常,但是推送數(shù)據(jù)給設(shè)備端,返回超時(shí),60秒都不能返回推送成功數(shù)據(jù),導(dǎo)致后面一直運(yùn)行不了,重啟進(jìn)程服務(wù),正常,所以想知道是什么問題引起的,需要怎么去解決,查看了LINUX是SOCKET連接數(shù)設(shè)置是6萬(wàn)多,所以應(yīng)該不是端口連接數(shù)受限制引起的
下次遇到這個(gè)問題運(yùn)行 php start.php status截圖下,截圖截全,不要截圖部分。
如果status里有進(jìn)程出現(xiàn)busy狀態(tài),參考 http://doc.workerman.net/debug/busy-process.html 定位。
參考手冊(cè) http://doc.workerman.net/appendices/kernel-optimization.html 優(yōu)化linux內(nèi)核,并安裝event擴(kuò)展(超過1000連接event擴(kuò)展是必須的)。
還有看下系統(tǒng)負(fù)載是否正常。負(fù)載高的話也會(huì)延遲。
不會(huì)是進(jìn)程busy情況, 因?yàn)榫鸵粋€(gè)鏈接, 我是通過gateway, 通過json協(xié)議,我的使用場(chǎng)景是, 當(dāng)用戶支付錢之后,然后在回調(diào)方法里面 主動(dòng)推送數(shù)據(jù)給停車場(chǎng)的閘機(jī), 讓其開門, 但是就是出奇的慢,雖然后來也不了了之了, 但是當(dāng)時(shí)試驗(yàn)確實(shí)很慢
估計(jì)你沒給 stream_socket_client 返回?cái)?shù)據(jù),stream_socket_client 一直fread等數(shù)據(jù),所以一直等待
event擴(kuò)展擴(kuò)展已經(jīng)安裝了,linux內(nèi)核也已經(jīng)優(yōu)化了,全部是按手冊(cè)上去優(yōu)化和安裝的,但是$client = stream_socket_client('tcp://127.0.0.1:5678', $errno, $errmsg, 1);推送消息給到設(shè)備,只要設(shè)備連接數(shù)超過1024,推送就會(huì)一直卡住,推送不出去,打印1234端口和設(shè)備的心跳,沒有卡頓,所以不知道現(xiàn)在這個(gè)情況要怎么處理
event擴(kuò)展沒安裝成功,用的是select,最高1024個(gè)連接
但是我確實(shí)是按手冊(cè)上的去裝的呀,如果安裝成功了,會(huì)是一個(gè)怎么樣的顯示呢
event擴(kuò)展沒安裝成功,用的是select,最高1024個(gè)連接
但是我確實(shí)是按手冊(cè)上的去裝的呀,如果安裝成功了,會(huì)是一個(gè)怎么樣的顯示呢,就你說的select那個(gè)位置
我現(xiàn)在上傳一個(gè)我按命令找到的event擴(kuò)展的圖片