作者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