1
yakczh 2014-02-26 15:41:36 +08:00
swoole
|
2
zorceta 2014-02-26 16:11:21 +08:00
socket可以承载TCP/IP,HTTP基于TCP/IP。
就这样。 |
4
itfanr 2014-02-26 16:37:33 +08:00
同时能够接收 http 请求又能够接收 socket 连接的 php 解决方案?http+socket?这个可以用在嵌入式上搞远程操作硬件码?
|
5
yakczh 2014-02-26 16:41:30 +08:00
php-fpm不能跑,只能用cli跑,除非修改fastcgi协议 不过你可以用nginx代理ws请求到cli,前端只暴露nginx
其实php做这个不如java,当然你可以用多进程来搞,然后再拉个memcache来共享信息 |
7
oott123 2014-02-26 16:46:02 +08:00 via Android
…跑一个 fpm ,再跑一个 cli 不就好了…
|
9
luckyduck 2014-02-26 16:53:02 +08:00
1.你可以用telnet直接连接上php-fpm,这时候你并没有走HTTP协议,它就像一个socket server,但你也没法让它执行你的PHP脚本,因为它不知道你要执行哪一个,你们之间没有遵循某种协议。
2.用php写的socket server,是可以处理http请求的,只不过这需要你自己来解析和响应,这就和python那些原理一样了。 |
10
yakczh 2014-02-26 16:54:26 +08:00
@itfanr 直接go吧,socket王者 参看 http://www.techempower.com/benchmarks/
|
12
mantianyu OP |
13
solove 2014-02-26 17:22:00 +08:00
推荐个别人写的 。。github fork下 zphp 项目有实现
|
14
mantianyu OP |
15
yakczh 2014-02-26 17:25:45 +08:00
@mantianyu 晕 不如是性能, socket都支持,都能做,就象同样的活,两个人干,有的干得快,有的干得慢, servlet只是sun对java来实现http请求服务方面定的一堆规范,你也可以定义一个serverlit的规范,说不定比它这个更快更简单
|
16
yakczh 2014-02-26 17:34:33 +08:00
这玩意儿就不要折腾php了,php是采用应用服务器和业务脚本分离的方案,相当于异构系统结合起来,应用服务器c常驻内存,处理连接, php脚本一次性筷子,用完就扔,而象java,python,ruby,node其他这么单一语言同时扮演应用服务器容器和业务处理方案来说,一步到位,只要在解析http协议的时候检测下upgrade头就可以了(ws),或者也可以用自己定义的数据包格式,正常的http请求头就处理完业务就断开连接,如果是自己定义的数据包格式,就保持连接,或者push数据
|
18
wwek 2014-02-26 18:18:53 +08:00
楼上的说的很清楚了。
php 的用 swoole 用cli模式。 或者用golang |
20
pubby 2014-02-26 21:38:50 +08:00
直接裸跑一个php进程好了,不要和php-fpm搞一起
至于性能,看你具体干什么用途了。 我在公司用php的socket做过很多性能要求不苛刻的东西。 话说几年前我还见过一个网页在线客服服务商的后台服务整个一个php+socket写的。(就是那种网页上挂一个在线客服对话框那种东西) 性能要求苛刻的,用node.js或者golang吧(从部署和升级的便利上来说更推荐golang,直接可执行程序一考完事) |
21
mantianyu OP @itfanr 不在一个区域网的话, 用 http 也做不到双向实时的通信啊, http 只是个请求 --- 响应模型, 仅用 http 要怎么进行远程控制?
|
23
mantianyu OP @itfanr 原来你是这个意思, 那如此说来, socket 就不能实现远程控制吗? 谁说 socket 只能用在区域网了
|
25
ybf1220 2014-02-27 09:45:20 +08:00
php-fpm 可以作为多个 factcgi 用,只要在/etc/php-fpm.d/写入相应的配置文件(这是防止跨站的好方法,不多很少人用) ,我只知道 php-fpm 除了在端口上监听,还可以在 socket 上监听,listen = /tmp/fpm.sock 。这样 nginx 只要反代到 sock 路径就能解析 php
|
26
pushy 2014-02-27 18:53:47 +08:00
bash-3.2# php -S 127.0.0.1:80
|