设为首页
收藏本站
用户名
Email
自动登录
找回密码
密码
登录
立即注册
只需一步,快速开始
快捷导航
登录
注册
论坛首页
BBS
建站模版
微站设计
虚拟主机
企业邮箱
博客日志
Blog
搜索
搜索
搜索
热搜
长春
优惠
活动
做网站
本版
帖子
用户
本版
帖子
用户
请
登录
后使用快捷导航
没有帐号?
立即注册
道具
勋章
任务
留言板
设置
我的收藏
退出
时时商务社区
»
论坛首页
›
建站资源
›
建站技术
›
基于php实现长连接的方法与注意事项的问题 ...
返回列表
查看:
330
|
回复:
0
基于php实现长连接的方法与注意事项的问题
[复制链接]
xgnic
当前离线
积分
11142
3444
主题
3465
帖子
1万
积分
管理员
积分
11142
发消息
电梯直达
楼主
发表于 2018-2-14 08:21:52
|
只看该作者
|
倒序浏览
|
阅读模式
php可以通过set_time_limit(0);来取消php脚步超时限制,从而达到长连接的效果。
例子代码如下:
[U]复制代码[/U] 代码如下:
echo "每隔3秒输出一次
";
set_time_limit(0); //保证php程序运行不超时退出
while(1) {
echo date("H:i:s")."
";
ob_flush();
flush(); //刷新并输出PHP缓冲数据
sleep(3); //延迟3秒
}
?>
示例代码2:
[U]复制代码[/U] 代码如下:
set_time_limit(0);
header("Connection:Keep-Alive");
header("
roxy-Connection:Keep-Alive");
for($i=0;$i
print 'text'.$i.'
';
ob_flush();
flush();
sleep(1);
clearstatcache();
}
这里调用了ob_flush(); flush();来强制输出数据到缓冲区,这样就能在脚步返回之前及时返回数据到浏览器。另外不冲下flush和ob_flush的使用上有一些特别容易犯错的地方,造成无法刷新输出缓冲。
一. flush和ob_flush的正确顺序,正确应是,先ob_flush再flush,如下:
ob_flush();
flush();
如果Web服务器的操作系统是windows系统,那顺序颠倒或者不使用ob_flush()也不会出现问题。但是在Linux系统上就无法刷新输出缓冲。
二. 使用ob_flush()前,确保前面的内容大小足够4069字符。
一些Web服务器的output_buffering默认是4069字符或者更大,即输出内容必须达到4069字符服务器才会flush刷新输出缓冲,为了确保flush有效,最好在ob_flush()函数前有以下语句:
print str_repeat(" ", 4096);
以确保到达output_buffering值。
[U]复制代码[/U] 代码如下:
for ($i=10; $i>0; $i--)
{
echo $i.'
';
ob_flush();
flush();
sleep(1);
}
ob_end_flush();
您可能感兴趣的文章:
30个php操作redis常用方法代码例子
php Session存储到Redis的方法
php操作redis中的hash和zset类型数据的方法和代码例子
在PHP中使用redis
php结合redis实现高并发下的抢购、秒杀功能的实例
PHP实现操作redis的封装类完整实例
php中使用redis队列操作实例代码
PHP中redis的用法深入解析
PHP的Laravel框架结合MySQL与Redis数据库的使用部署
PHP长连接实现与使用方法详解
PHP扩展模块memcached长连接使用方法分析
PHP使用Redis长连接的方法详解
分享到:
QQ好友和群
QQ空间
腾讯微博
腾讯朋友
收藏
0
回复
使用道具
举报
返回列表
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
用户反馈
客户端