作者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)
1F:推 alpe:我3年前作过一次, 所以快很多啊. 这两天在jsdc混 05/19 09:41
2F:推 s25g5d4:jsdc 用socket.io做的聊天室正在被玩弄中 05/19 10:40
3F:→ gpmm:socket.io 我们公司目前有在用 XDD 05/19 11:15
4F:推 PsMonkey:哇靠... 你这几乎是重新大改了耶 [跪拜之 Orz] 05/19 12:38
5F:推 PsMonkey:有些技巧还没办法体会... [泪奔] 05/19 12:40
6F:推 ckmarkhsu:我们家的工程师说Socket.io在高连线数的时候不稳定 05/19 18:04
7F:→ ckmarkhsu:(他说他实作的时候好像是3K connection时遇到问题) 05/19 18:05
8F:→ ckmarkhsu:所以现在看到他,都跳过QQ 05/19 18:05
9F:→ ckmarkhsu: s 05/19 18:05
10F:→ Darkland:nodejs 在高连线数时会被 V8 的 GC 搞死QQ 05/19 22:21