基于php实现长连接的方法与注意事项的问题


Posted in PHP onMay 10, 2013

php可以通过set_time_limit(0);来取消php脚步超时限制,从而达到长连接的效果。

例子代码如下:

<?php
echo "每隔3秒输出一次<br />";
set_time_limit(0); //保证php程序运行不超时退出
while(1) {
   echo date("H:i:s")."<br />";
   ob_flush();
   flush(); //刷新并输出PHP缓冲数据
   sleep(3); //延迟3秒
}
?>

示例代码2:

set_time_limit(0);
header("Connection:Keep-Alive");
header("Proxy-Connection:Keep-Alive");
for($i=0;$i<60;$i++) {
   print 'text'.$i.'<br>';
   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值。

for ($i=10; $i>0; $i--)
{
echo $i.'<br />';
ob_flush();
flush();
sleep(1);
}
ob_end_flush();
PHP 相关文章推荐
教你IIS6的PHP最佳配置方法
Sep 05 PHP
如何使用PHP获取网络上文件
Oct 09 PHP
snoopy PHP版的网络客户端提供本地下载
Apr 15 PHP
理解php Hash函数,增强密码安全
Feb 25 PHP
php中实现记住密码自动登录的代码
Mar 02 PHP
php 目录遍历、删除 函数的使用介绍
Apr 28 PHP
服务器上配置PHP运行环境教程
Feb 12 PHP
php提取身份证号码中的生日日期以及验证是否为成年人的函数
Sep 29 PHP
总结PHP中DateTime的常用方法
Aug 11 PHP
php强制下载文件函数
Aug 24 PHP
PHP运行模式汇总
Nov 06 PHP
php和vue配合使用技巧和方法
May 09 PHP
Apache服务器无法使用的解决方法
May 08 #PHP
setcookie中Cannot modify header information-headers already sent by错误的解决方法详解
May 08 #PHP
PHP 登录记住密码实现思路
May 07 #PHP
php启动时候提示PHP startup的解决方法
May 07 #PHP
深入phpMyAdmin的安装与配置的详细步骤
May 07 #PHP
基于AppServ,XAMPP,WAMP配置php.ini去掉警告信息(NOTICE)的方法详解
May 07 #PHP
wamp下修改mysql访问密码的解决方法
May 07 #PHP
You might like
php&amp;java(一)
2006/10/09 PHP
php jsonp单引号转义
2014/11/23 PHP
PHP自带方法验证邮箱、URL、IP是否合法的函数
2016/12/08 PHP
javascript 年月日联动实现核心代码
2009/12/21 Javascript
在JavaScript中typeof的用途介绍
2013/04/11 Javascript
教你如何使用PHP输出中文JSON字符串
2014/05/22 Javascript
jQuery解析json数据实例分析
2015/11/24 Javascript
input 禁止输入特殊字符的四种实现方式
2016/08/24 Javascript
angular2+node.js express打包部署的实战
2017/07/27 Javascript
vue中遇到的坑之变化检测问题(数组相关)
2017/10/13 Javascript
vue.js element-ui validate中代码不执行问题解决方法
2017/12/18 Javascript
JavaScript 下载svg图片为png格式
2018/06/21 Javascript
Element Input组件分析小结
2018/10/11 Javascript
vue动态绑定class的几种常用方式小结
2019/05/21 Javascript
async/await让异步操作同步执行的方法详解
2019/11/01 Javascript
JS数组reduce()方法原理及使用技巧解析
2020/07/14 Javascript
vue移动端写的拖拽功能示例代码
2020/09/09 Javascript
[01:28:31]《加油DOTA》真人秀 第五期
2014/09/01 DOTA
[01:09:13]DOTA2-DPC中国联赛 正赛 CDEC vs XG BO3 第三场 1月19日
2021/03/11 DOTA
python3使用tkinter实现ui界面简单实例
2014/01/10 Python
python实现博客文章爬虫示例
2014/02/26 Python
Python实现在线程里运行scrapy的方法
2015/04/07 Python
python中json格式数据输出的简单实现方法
2016/10/31 Python
Python爬取十篇新闻统计TF-IDF
2018/01/03 Python
python自动循环定时开关机(非重启)测试
2019/08/26 Python
Python图像识别+KNN求解数独的实现
2020/11/13 Python
Kathmandu英国网站:新西兰户外运动品牌
2017/03/27 全球购物
美国益智玩具购物网站:Fat Brain Toys
2017/11/03 全球购物
罗马尼亚购物网站:Vivantis.ro
2019/07/20 全球购物
写给保洁员表扬信
2014/01/08 职场文书
展会邀请函范文
2014/01/26 职场文书
2014物价局群众路线对照检查材料思想汇报
2014/09/21 职场文书
离职感谢信
2015/01/21 职场文书
销售经理工作检讨书
2015/02/19 职场文书
大学生个人简历自荐信
2015/03/06 职场文书
Python创建SQL数据库流程逐步讲解
2022/09/23 Python