作者PsMonkey (痞子軍團團長)
看板PHP
標題[請益] 兩個 socket server 之間的溝通?
時間Fri May 17 23:56:14 2013
標題好難下...... 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
1F:推 LaPass:拍拍.... 你也開始摸PHP了啊 05/18 00:01
2F:→ PsMonkey:都是為了錢阿...... 05/18 00:17
4F:→ olctw:用 node.js 解比較輕鬆自在 XD ,如果能夠掛上去的話 05/18 00:20
6F:→ PsMonkey:目前是在 windows 上,未來在什麼上不知道 05/18 00:46
7F:→ PsMonkey:所以得考慮純 PHP 解,pcnt 也不能用 05/18 00:46
8F:→ olctw:嗯,那就有點硬了... XD 05/18 00:50
9F:→ gpmm:純 windows 還是可以跑 nodejs 啊 XD 05/18 01:07
10F:推 johnny1972:你是想跑一個php.exe生出兩個server?還是跑兩個php.exe 05/18 01:11
11F:→ johnny1972:各自生一個出來溝通? 05/18 01:11
12F:→ PsMonkey:回樓上:基本上希望一個 php.exe 生出兩個 server 05/18 01:13
13F:→ PsMonkey:但是兩個 php.exe 可以互相溝通也 ok 05/18 01:14
14F:→ johnny1972:無論是哪一個,你都應該要修改一下 WebSockerServer 05/18 01:20
15F:→ johnny1972:然後ExampleServer.class.php 不要直接用繼承的 05/18 01:21
16F:→ johnny1972:把 server create socket, socket_select 的部份抽出來 05/18 01:21
17F:→ johnny1972:create 2個listen用的port,socket_select這兩個port 05/18 01:23
18F:→ johnny1972:處理好 new connection跟dispatch的部份,應該可以做到 05/18 01:24
19F:→ johnny1972:兩隻php.exe就在 run 裡頭加上可以 call_back 做事 05/18 01:31
20F:→ johnny1972:用 gpmm大提到的用檔案溝通,其實也就可以了 05/18 01:32
21F:推 alpe:可能很久以前幹過類似的事, 找找 05/18 21:17
22F:推 alpe:改完了, 可以作 05/18 22:55