社区
基础编程
帖子详情
PHP socket客户端通信长连接问题
aility
2011-04-07 11:17:05
各位大侠:
最近做一个项目用到php 采用socket通信,连接一个服务端程序, 然后在一个页面,根据服务端发送过来的消息对页面进行刷新。
需要一直保持该socket连接,然后每间隔1秒,不停的获取信息,然后处理。
本来这次用了sajax 异步刷新, 但是每次刷新时,都重新调用了我的socket初始化部分(登录等各个步骤,)而不是仅仅recv一次消息, 有就显示,无就不处理。
各位朋友,有什么好的方法和建议,非常感谢。
...全文
3316
22
打赏
收藏
PHP socket客户端通信长连接问题
各位大侠: 最近做一个项目用到php 采用socket通信,连接一个服务端程序, 然后在一个页面,根据服务端发送过来的消息对页面进行刷新。 需要一直保持该socket连接,然后每间隔1秒,不停的获取信息,然后处理。 本来这次用了sajax 异步刷新, 但是每次刷新时,都重新调用了我的socket初始化部分(登录等各个步骤,)而不是仅仅recv一次消息, 有就显示,无就不处理。 各位朋友,有什么好的方法和建议,非常感谢。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
22 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
剑心永远OK
2013-12-02
打赏
举报
回复
long polling nodejs + stock.io websocket 不知道是不是你想要的
jdgdf566
2013-12-01
打赏
举报
回复
告诉你答案:chrome的比较新的版本有了websocket,其它浏览器不支持。只能借助flash。
海参崴
2013-11-27
打赏
举报
回复
了解下swoole扩展吧。www.swoole.com
wan274739577
2011-10-13
打赏
举报
回复
只能把php 做成一个服务,把php改为在cli方式去运行,做成长连接一样,绑定代理服务器,用scoket 侦听端口 方式。实现中间层C++跟php之间的通信就可以了。
al 想实现的功能正是我现在想做的。这里有一个php scoket的解决方案,咱们一起研究。QQ:274739577
http://www.laruence.com/2009/06/11/930.html
aility
2011-04-08
打赏
举报
回复
[Quote=引用 17 楼 amani11 的回复:]
1#给出的答案很好了
用flash的socket,与服务端通信,客户端结合js静态刷新页面就好了
[/Quote]
有没有这方面的实例,flash确实也不懂
amani11
2011-04-08
打赏
举报
回复
1#给出的答案很好了
用flash的socket,与服务端通信,客户端结合js静态刷新页面就好了
fxs_2008
2011-04-08
打赏
举报
回复
客户端请求一个php,php不关闭,php只找开socket一次,然后每分种读取一次socket并输出
fxs_2008
2011-04-08
打赏
举报
回复
简单地说,只要这个php进程不关闭,你可以循环取数据并输出
aility
2011-04-08
打赏
举报
回复
[Quote=引用 12 楼 falizixun2 的回复:]
能不能不用socket,直接在前端每秒发送一次请求?对C++服务端不太清楚。不知道这里能否处理!comet好象也是能达到效果的!
[/Quote]
因为消息是即时的,如果隔一段时间去取,可能在这个间隔的时间,部分消息已经被丢弃了,目前还不能考虑用数据库来保存,因为消息太多了,并且是即时的,过时的消息对后面可能已经没有意义了,因为后面新的消息可能已经又到来了
aility
2011-04-08
打赏
举报
回复
[Quote=引用 11 楼 boojs 的回复:]
引用 9 楼 snmr_com 的回复:
我也是“知道”而已,嘿嘿,不比你多很多
server push说白了就是一个协议头,浏览器支持这个协议
这个协议最初由网景作出(不知道是否mozilla提出的),反正网景、火狐支持,现在的ie能否支持不清楚(以前不行)
google“php "server push"”很多的
旧文章 http://bbs3.chinaunix.net/a……
[/Quote]
BooJS
兄弟说的对,我就是这个需求,可惜没找到好的解决方案
aility
2011-04-07
打赏
举报
回复
现在就是要做成BS模型的, CS模型的我已经在sh下测试没问题了
foolbirdflyfirst
2011-04-07
打赏
举报
回复
[Quote=引用 2 楼 aility 的回复:]
现在是要求用php实现客户端与服务端通信,并在页面上刷新显示出来. flash暂时先不考虑,不知道能否实现
[/Quote]
php本身是没问题,问题在于模型,c/s当然是没问题,你可以随意在网上找到php socket client + php socket server在cli下运行的例子.但是换成b/s,那就成问题了。
aility
2011-04-07
打赏
举报
回复
现在是要求用php实现客户端与服务端通信,并在页面上刷新显示出来. flash暂时先不考虑,不知道能否实现
foolbirdflyfirst
2011-04-07
打赏
举报
回复
目前可以通过借助flash作为socket客户端hold住socket connet.
Html5推出了WebSocket,需要浏览器配套支持。
kaifadi
2011-04-07
打赏
举报
回复
能不能不用socket,直接在前端每秒发送一次请求?对C++服务端不太清楚。不知道这里能否处理!comet好象也是能达到效果的!
BooJS
2011-04-07
打赏
举报
回复
[Quote=引用 9 楼 snmr_com 的回复:]
我也是“知道”而已,嘿嘿,不比你多很多
server push说白了就是一个协议头,浏览器支持这个协议
这个协议最初由网景作出(不知道是否mozilla提出的),反正网景、火狐支持,现在的ie能否支持不清楚(以前不行)
google“php "server push"”很多的
旧文章 http://bbs3.chinaunix.net/archiver/tid-35735.html
……
[/Quote]
基本都是基于http的,http是基于tcp,而lz现在是要基于tcp在浏览器进行监听,收发。
BooJS
2011-04-07
打赏
举报
回复
浏览器帮我们做了
与web http服务器tcp三次握手 -> http请求 -> 返回http
而lz是想
与socket server(默认tcp协议) -> 一直监听socket server+端口 -> 期间socket请求/socket返回 -> 关闭socket client.
不一样的模型。
html5的WebSocket可以做到。可惜SB ie还不支持。
ImN1
2011-04-07
打赏
举报
回复
我也是“知道”而已,嘿嘿,不比你多很多
server push说白了就是一个协议头,浏览器支持这个协议
这个协议最初由网景作出(不知道是否mozilla提出的),反正网景、火狐支持,现在的ie能否支持不清楚(以前不行)
google“php "server push"”很多的
旧文章 http://bbs3.chinaunix.net/archiver/tid-35735.html
这个貌似也是旧文新发 http://www.oeedu.com/contents/1176/9017.html
这个也是说长连接,新点(说ie支持),但从头到尾我都没看到server push技术
http://hi.baidu.com/zomew/blog/item/3cfd09eb43097235b90e2d66.html
aility
2011-04-07
打赏
举报
回复
server push保持php到浏览器的连接.也找了很多这方面的资料,都是只言片语,没有看到可参考的。
snmr_com有没有好的实例介绍一下。最好简单一些,便于理解整个流程,及思路
另外用flash来进行socket交互,并且根据消息对页面进行更新,有这方面的资料介绍一下,谢谢了
没接触过flash.
ImN1
2011-04-07
打赏
举报
回复
我不懂php socket,下面说错了别见笑
你的需求其实不仅仅是b/s,应该是b/s/s,php应该只是个中间件
php-C++的长连接应该问题不大,问题是ajax到php的请求结束,php的运行也结束了(php-C++连接也就结束了)
你应该重新考虑php到浏览器的连接方式,ajax无疑是client pull,
php属于你完全控制,而且只有一个客户端(就是本地浏览器,不会太耗资源),这时你不妨考虑server push保持php到浏览器的连接
加载更多回复(2)
征服Node.js 7.x视频课程(10):
Socket
通信
Socket
服务端和
客户端
的建立,HTTP服务器的模拟,UDP服务端和
客户端
的建立。
php
客户端
socket
长连接
超时,[
PHP
]
socket
客户端
时的超时
问题
连接
socket
分为连接超时和读取超时$sock=stream_
socket
_client("www.google.com:80",$errno,$errstr,2); 那个数字是连接超时 ,比如连接google , 2秒就返回错误 , 这样就不会一直等在那了stream_set_timeout($sock,5); 这个数字是读取数据的超时stream_get_meta_data 可以在...
Socket
多线程实现服务端与多个
客户端
通信
以及
客户端
之间的
通信
使用
Socket
实现服务端与
客户端
通信
Socket
socket
一般指套接字,将TCP/IP协议封装为几个简单的接口,应用层调用接口就能实现进程间的
通信
。
通信
的两个进程各自持有一个
socket
,双方通过
socket
提供的接口进行
通信
,
socket
是成对出现的。
socket
通信
实现过程 服务端创建Server
Socket
对象,调用accept()方法监听请求,当接收到请求时,返回一个
socket
对象。 Server
Socket
server
Socket
= new Server
Socket
(8888);/
php
socket
tcp
客户端
最近公司项目有需求,需要用到
socket
通讯,连接方式为tcp ; 首先
socket
是什么,能干什么。
Socket
是应用层与TCP/IP协议族
通信
的中间软件抽象层,它是一组接口。在设计模式中,
Socket
其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在
Socket
接口后面,对用户来说,一组简单的接口就是全部,让
Socket
去组织数据,以符合指定的协议。 什么是TCP/IP、UDP? TCP/IP(Transmission Control Protocol/Internet Protocol
PHP
如何实现
socket
长连接
实际应用项目:http://github.crmeb.net/u/long
长连接
是什么? 朋友们应该都见过很多在线聊天工具和网页在线聊天的工具。学校内有一种熟悉的功能,如果有人回复你了,网站会马上出现提示,此时你并没有刷新页面;Gmail也有此功能,如果邮箱里收到了新的邮件,网站会马上提醒你,即使你的网页一直未刷新过。说到这里大家肯定不陌生,就是复用一个链接持续不断的进行数据交互。在现下很多互联网业务场景都需要
长连接
的支持,比如:游戏、聊天、信息推送等等等,这么多类似的功能都离不开
长连接
。前一章节介绍
基础编程
21,886
社区成员
140,364
社区内容
发帖
与我相关
我的任务
基础编程
从PHP安装配置,PHP入门,PHP基础到PHP应用
复制链接
扫一扫
分享
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章