PHP中用set_time_limit(0)长连接的实现--更新数据库时间限制中断解决方法
来源:互联网 发布:python语言入门 pdf 编辑:程序博客网 时间:2024/05/01 08:02
最近遇到PHP程序在执行大量数据的时候提示超时,于是用到了set_time_limit()函数来设置PHP页面的最
大运行时间。
设置允许脚本运行的秒数。如果这是默认的,该脚本返回一个致命的错误。默认限制为30秒,或者也可以
在在php.ini定义max_execution_time来设置PHP页面的最大执行时间。
在调用时,set_time_limit()函数从零重新启动超时计数器。换句话说,如果超时默认的30秒,25秒到
脚本的执行参数或者set_time_limit,如设置超时时间为(20),该脚本将运行45秒时才会超时。
set_time_limit(900);
这个函数指定了当前所在php脚本的最大执行时间,
虽然设定值是900秒,实际上
最大执行时间=php.ini里的max_execution_time数值 - 当前脚本已经执行的时间 + 设定值
假如php.ini里的max_execution_time=30,当前脚本已经执行10秒,则:
最大执行时间=30-10+900=920秒。
经过如此修改后,PHP脚本成功更新200000条记录。
每次我们访问PHP脚本的时候,都是当所有的PHP脚本执行完成后,我们才得到返回结果。如果我们需要一个脚本持续的运行,那么我们就要通过php长连接的方式,来达到运行目的。
每个PHP脚本都限制了执行时间,所以我们需要通过 set_time_limit 来设置一个脚本的执行时间为无限长;然后使用 flush() 和 ob_flush() 来清除服务器缓冲区,随时输出脚本的返回值。
如下面这段脚本:
<?phpheader("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 ,如果不按停止按钮,浏览器会不停的一行一行继续加载。
通过这一方法,我们可以完成很多功能,例如机器人爬虫、即时留言板等程序。
- PHP中用set_time_limit(0)长连接的实现--更新数据库时间限制中断解决方法
- PHP中用set_time_limit(0)长连接的实现
- php中设置set_time_limit不起作用的解决方法
- php中(包括织梦cms)set_time_limit(0)不起作用的解决方法
- php更新数据库中断的解决
- PHP数据库长连接mysql_pconnect的细节
- PHP数据库长连接mysql_pconnect的细节
- PHP实现长连接
- PHP实现长连接
- PHP长连接实现
- php 实现长连接
- php 实现长连接
- PHP:ignore_user_abort()+set_time_limit(0)+sleep($interval)实现计划任务
- PHP中@set_time_limit默认时间是多少
- php set_time_limit
- Django实现数据库长连接
- 代码干货 | PHP数据库长连接mysql_pconnect的细节
- php实现长连接的方法和注意事项
- php进行http重定向
- CodeBlocks+MinGW+wxWidgets 搭建 C++ 开发环境
- 找出丢失的数字 (XOR)
- matlab 读自定义格式文件 fscanf & sscanf
- 提问的智慧
- PHP中用set_time_limit(0)长连接的实现--更新数据库时间限制中断解决方法
- PHP持续保有长连接,利用flush()持续更新浏览器UI,下载进度条实现
- com.google.code:sitemapgen4j介绍
- 征服 Apache + Tomcat
- 使用Javascript设置HTML元素的不透明度
- javascript 正则表达式笔记录
- hoj 经典最短路 回家
- 指针的指针
- Lua1.0-应用程序扩展语言的设计与实现(下)