作者gpmm (銀色)
看板PHP
標題Re: [請益] 兩個 socket server 之間的溝通?
時間Sun May 19 05:32:52 2013
※ 引述《PsMonkey (痞子軍團團長)》之銘言:
: ※ 引述《PsMonkey (痞子軍團團長)》之銘言:
: : → johnny1972:無論是哪一個,你都應該要修改一下 WebSockerServer 05/18 01:20
: : → johnny1972:然後ExampleServer.class.php 不要直接用繼承的 05/18 01:21
: : → johnny1972:把 server create socket, socket_select 的部份抽出來 05/18 01:21
: : → johnny1972:create 2個listen用的port,socket_select這兩個port 05/18 01:23
: : → johnny1972:處理好 new connection跟dispatch的部份,應該可以做到 05/18 01:24
: : → johnny1972:兩隻php.exe就在 run 裡頭加上可以 call_back 做事 05/18 01:31
: : → johnny1972:用 gpmm大提到的用檔案溝通,其實也就可以了 05/18 01:32
: 感謝 johnny1972 大人點撥
: 只能說被發現我抄人家的 code 又不求甚解,才會炸這種問題 [死]
: 雖然說現在還是不求甚解,不過總算是硬幹出一個符合需求的東西
: https://github.com/PsMonkey/HatePhp/tree/master/socket
: 關鍵點在於 socket_select() 會幫你找出哪個 socket 有變化
: 原先思考的盲點在於... server A 跟 server B 各自獨立
: 那其實只要再用一個陣列把 server A 跟 server B 的
: 所有 socket 都收集起來,一起作 socket_select()
: 挑出來的 socket 再判斷是 server A/B 的
: (po 這篇的時候才想到,socket_select() 如果不會有 pause 效果
: 那好像也不用這麼麻煩? 阿阿阿阿... 算了不管了... [遮臉])
: 然後很彆扭地花了一點功夫蓋 OO 違章建築...
: 當然目前這種寫法,各個 socket server
: 彼此都得 reference / couple 在一起
: 不過我實在沒力氣再去 decouple 了
: 程式敢拿去用的就用吧
: 要詰譙程式寫法也絕對歡迎...
: 我跟 PHP 的感情真的不太好 [死]
: : 推 alpe:改完了, 可以作 05/18 22:55
: alpe 大提供的解法我就沒有看了
: 只能說我對 PHP 沒那麼有愛,有弄出解法就好... [死]
結果你已經解完了啊 Q_Q
https://github.com/wakefield/HatePhp
今天花了一天的時間斷續在弄這個…
因為平常都很乖乖遵循 DRY 原則(絕對不是懶惰),
所以回頭手刻實在有些吃力啊… socket 用起來總覺得很多地方還處於迷霧狀態。
無論無何,我這邊也算是弄出來了,
寫到最後連 codeing style 都維護不能…
先講結論怎麼跑,
開 example 下的 service.php / hardware.php
php -q service.php
php -q hardware.php
網頁一樣開 example/testExample.php
因為我不清楚你 hardware 的 socket 是如何處理,
所以姑且做了一個偽 hardware,
hardware 開起來會自動丟 counter,
理論上網頁開起來,連上後就看的到了,
同理網頁丟字進去也會自動扔到 hardware,
我的環境是 php 5.4 ,因為有用到匿名函數的 `use`,
所要確認一下猴大你的版本合不合,
至於其他整理 code 和文件什麼鬼的…等我有精神再好好弄吧… orz
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 1.172.160.74
※ 編輯: gpmm 來自: 1.172.160.74 (05/19 05:33)
推 alpe:我3年前作過一次, 所以快很多啊. 這兩天在jsdc混 05/19 09:41
推 s25g5d4:jsdc 用socket.io做的聊天室正在被玩弄中 05/19 10:40
→ gpmm:socket.io 我們公司目前有在用 XDD 05/19 11:15
推 PsMonkey:哇靠... 你這幾乎是重新大改了耶 [跪拜之 Orz] 05/19 12:38
推 PsMonkey:有些技巧還沒辦法體會... [淚奔] 05/19 12:40
推 ckmarkhsu:我們家的工程師說Socket.io在高連線數的時候不穩定 05/19 18:04
→ ckmarkhsu:(他說他實作的時候好像是3K connection時遇到問題) 05/19 18:05
→ ckmarkhsu:所以現在看到他,都跳過QQ 05/19 18:05
→ ckmarkhsu: s 05/19 18:05
→ Darkland:nodejs 在高連線數時會被 V8 的 GC 搞死QQ 05/19 22:21