[請益] 兩個 socket server 之間的溝通?

看板PHP作者 (痞子軍團團長)時間12年前 (2013/05/17 23:56), 編輯推噓4(4018)
留言22則, 6人參與, 最新討論串1/7 (看更多)
標題好難下...... Orz 故事是這樣的,我需要用 PHP 建立起兩個 socket server 一個是標準的 socket server 另一個是 websocket server(其實也是 socket server) 然後它們彼此之間要溝通,因為我要做的事情是... hardware ←→ socket server ←→ websocket server ←→ browser 最原始的需求是 當 hardware 有了某些變化時要能夠在 browser 上做出反應 而 browser 上的某些操作要能反應在 hardware 上 所以我現在的作法是 browser 跟 web server 之間就用 websocket 解決 (不用考慮 cross-browser 真是開心) websocket server 也用 PHP 弄出來了 https://github.com/PsMonkey/HatePhp/tree/master/WebSocket 但是一旦 service.php 開始執行 $server->run() 之後的指令就都不會執行 (謎之聲:廢話,因為裡頭有個無窮迴圈) 我原本幻想在 service.php 當中同時有兩個 server 的 instance 這樣它們彼此之間就可以透過參數傳遞的方法溝通 但是現在看起來... 真的是幻想...... Orz 所以,想請教的是 1. 在 PHP 當中實作一個 socket server 只能用一個無窮迴圈這個方法嗎? 2. 有沒有辦法在一個 PHP 當中運作兩個 socket server? 3. 還是以我的需求來說,在 PHP 當中有正確的解法? (我承認我的想法很 Java,實在改不過來 Orz) 懇請各位幫忙突破盲點 [淚目] -- 錢鍾書: 說出來的話 http://www.psmonkey.org 比不上不說出來的話 Java 版 cookcomic 版 只影射著說不出來的話 and more...... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.25.23.149

05/18 00:01, , 1F
拍拍.... 你也開始摸PHP了啊
05/18 00:01, 1F

05/18 00:17, , 2F
都是為了錢阿......
05/18 00:17, 2F

05/18 00:19, , 3F
用 pcntl_fork() ? http://goo.gl/qWiWM ,不過你的需求好像
05/18 00:19, 3F

05/18 00:20, , 4F
用 node.js 解比較輕鬆自在 XD ,如果能夠掛上去的話
05/18 00:20, 4F

05/18 00:28, , 5F
找著找著,看到這個 http://daemon.io/ (不過沒玩過)
05/18 00:28, 5F

05/18 00:46, , 6F
目前是在 windows 上,未來在什麼上不知道
05/18 00:46, 6F

05/18 00:46, , 7F
所以得考慮純 PHP 解,pcnt 也不能用
05/18 00:46, 7F

05/18 00:50, , 8F
嗯,那就有點硬了... XD
05/18 00:50, 8F

05/18 01:07, , 9F
純 windows 還是可以跑 nodejs 啊 XD
05/18 01:07, 9F

05/18 01:11, , 10F
你是想跑一個php.exe生出兩個server?還是跑兩個php.exe
05/18 01:11, 10F

05/18 01:11, , 11F
各自生一個出來溝通?
05/18 01:11, 11F

05/18 01:13, , 12F
回樓上:基本上希望一個 php.exe 生出兩個 server
05/18 01:13, 12F

05/18 01:14, , 13F
但是兩個 php.exe 可以互相溝通也 ok
05/18 01:14, 13F

05/18 01:20, , 14F
無論是哪一個,你都應該要修改一下 WebSockerServer
05/18 01:20, 14F

05/18 01:21, , 15F
然後ExampleServer.class.php 不要直接用繼承的
05/18 01:21, 15F

05/18 01:21, , 16F
把 server create socket, socket_select 的部份抽出來
05/18 01:21, 16F

05/18 01:23, , 17F
create 2個listen用的port,socket_select這兩個port
05/18 01:23, 17F

05/18 01:24, , 18F
處理好 new connection跟dispatch的部份,應該可以做到
05/18 01:24, 18F

05/18 01:31, , 19F
兩隻php.exe就在 run 裡頭加上可以 call_back 做事
05/18 01:31, 19F

05/18 01:32, , 20F
用 gpmm大提到的用檔案溝通,其實也就可以了
05/18 01:32, 20F

05/18 21:17, , 21F
可能很久以前幹過類似的事, 找找
05/18 21:17, 21F

05/18 22:55, , 22F
改完了, 可以作
05/18 22:55, 22F
文章代碼(AID): #1HbbCYtY (PHP)
討論串 (同標題文章)
文章代碼(AID): #1HbbCYtY (PHP)