PHP set_time_limit(0)长连接的实现分析

每个PHP脚本都限制了执行时间,所以我们需要通过 set_time_limit 来设置一个脚本的执行时间为无限长;然后使用 flush() 和 ob_flush() 来清除服务器缓冲区,随时输出脚本的返回值。

如下面这段脚本:


代码如下:

<?php
header("Content-Type: text/plain");
set_time_limit(0);

$infoString = "Hello World" . "\n";
while( isset($infoString) )
{
echo $infoString;
flush();
ob_flush();
sleep(5);
}
?>

当我们执行后,每隔5秒钟,我们会得到一行 Hello World ,如果不按停止按钮,浏览器会不停的一行一行继续加载。

通过这一方法,我们可以完成很多功能,例如机器人爬虫、即时留言板等程序。

(0)

相关推荐

  • PHP set_time_limit(0)长连接的实现分析

    每个PHP脚本都限制了执行时间,所以我们需要通过 set_time_limit 来设置一个脚本的执行时间为无限长:然后使用 flush() 和 ob_flush() 来清除服务器缓冲区,随时输出脚本的返回值. 如下面这段脚本: 复制代码 代码如下: <?php header("Content-Type: text/plain"); set_time_limit(0); $infoString = "Hello World" . "\n";

  • PHP扩展模块memcached长连接使用方法分析

    网上广泛流传着一篇文章,讲述php的两个扩展模块memcache和memcached的区别,其中特意强调了memcached与memcached一个很大的区别是memcached模块不支持长连接.以至于后来很多年我都认为memcached是不支持长连接的,其实不然,memcached扩展模块从很早的版本开始就已经支持长连接了.从扩展模块的源码注视中我们就能看到: /* {{{ Memcached::__construct([string persistent_id[, callback on_n

  • PHP长连接实现与使用方法详解

    本文实例讲述了PHP长连接实现与使用方法.分享给大家供大家参考,具体如下: 长连接技术(Long Polling) 在服务器端hold住一个连接, 不立即返回, 直到有数据才返回, 这就是长连接技术的原理 长连接技术的关键在于hold住一个HTTP请求, 直到有新数据时才响应请求, 然后客户端再次自动发起长连接请求. 那怎么样hold住一个请求呢?服务器端的代码可能看起来像这样的 set_time_limit(0); //这句很重要, 不至于运行超时 while (true) { if (has

  • PHP使用Redis长连接的方法详解

    本文实例讲述了PHP使用Redis长连接的方法.分享给大家供大家参考,具体如下: php-redis在github上的项目地址:https://github.com/phpredis/phpredis pconnect函数声明 其中time_out表示客户端闲置多少秒后,就断开连接.函数连接成功返回true,失败返回false: pconnect(host, port, time_out, persistent_id, retry_interval) host: string. can be a

  • python用socket实现协议TCP长连接框架

    “ 使用python实现协议中常见的TCP长连接框架.” 分析多了协议就会发现,很多的应用,特别是游戏类和IM类应用,它们的协议会使用长连接的方式,来保持客户端与服务器的联系,这些长连接,通常是TCP承载的. 如果我们要模拟这个客户端的行为,根据不同应用服务器的实现情况,有些长连接不是必须的,但有些长连接,就必须去实现它.例如最近分析的某应用,虽然它主要使用HTTP协议进行交互,但它在TCP长连接中传输了一些必须的信息,如果不实现长连接,就会有很多信息无法处理. 在python中,很容易实现HT

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

    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缓冲数据

  • 基于HTTP长连接的"服务器推"技术的php 简易聊天室

    首先是首页,包含一个文本输入和一个显示聊天内容的iframe,还有一个隐藏iframe用来提交form表单: 复制代码 代码如下: <?php //chat.php header('cache-control: private'); header('Content-Type: text/html; charset=utf-8'); ?> <html> <script type="text/javascript"> function submitCha

  • HTTP长连接与短连接使用方法及测试详解

    HTTP短连接(非持久连接)是指,客户端和服务端进行一次HTTP请求/响应之后,就关闭连接.所以,下一次的HTTP请求/响应操作就需要重新建立连接. HTTP长连接(持久连接)是指,客户端和服务端建立一次连接之后,可以在这条连接上进行多次请求/响应操作.持久连接可以设置过期时间,也可以不设置. 我为什么没有说HTTP/1.0 默认短连接,HTTP/1.1起,默认长连接呢?因为我第一次看这个说法的时候,以为自己懂了,其实并没有懂.长短连接操作上有什么区别,有的地方出现的持久连接又是怎么回事? 使用

  • 构建高效的python requests长连接池详解

    前文: 最近在搞全网的CDN刷新系统,在性能调优时遇到了requests长连接的一个问题,以前关注过长连接太多造成浪费的问题,但因为系统都是分布式扩展的,针对这种各别问题就懒得改动了. 现在开发的缓存刷新系统,对于性能还是有些敏感的,我后面会给出最优的http长连接池构建方式. 老生常谈: python下的httpclient库哪个最好用? 我想大多数人还是会选择requests库的.原因么?也就是简单,易用! 如何蛋疼的构建reqeusts的短连接请求: python requests库默认就

  • socket连接关闭问题分析

    socket编程过程中往往会遇到这样那样的问题,出现了这些问题,有的是由于并发访问量太大造成的,有些却是由于代码中编程不慎造成的.比如说,最常见的错误就是程序中报打开的文件数过多这个错误.socket建立连接的时候是三次握手,这个大家都很清楚,但是socket关闭连接的时候,需要进行四次挥手,但很多人对于这四次挥手的具体流程不清楚,吃了很多亏. CLOSE_WAIT分析 socket是一种全双工的通信方式,建立完socket连接后,连接的任何一方都可以发起关闭操作.这里不妨假设连接的关闭是客户端

随机推荐