[PHP学习教程

引言:如何模拟那些自动轮循的服务,像守护进程(Daemon)那样,可以一直执行,永不停歇呢!

Come on! Do it! Do! Do! Do!....

使用接口:

int ignore_user_abort ( [bool setting] )

方法声明:

这个函数的作用是指示服务器端在远程客户端关闭连接后是否继续执行下面的脚本。

参数说明:

setting:参数是一个可选参数。如设置为True,则表示如果用户停止脚本运行,仍然不影响脚本的运行(即:脚本将持续执行);如果设置为False,则表示当用户停止运行脚本程序时,脚本程序将停止运行

讲了这么多,都不如直接撸一行代码来的有效,直接搞了。

基础示例


下面这个例子,在用户关闭浏览器后,该脚本仍然后在服务器上继续执行

<?php
// 后台运行
ignore_user_abort();
// 取消脚本运行时间的超时上限
set_time_limit(0);

// 执行轮循
do {
    // 休眠1分钟
    sleep(60);
    // 处理具体事情
    echo 'Do!';
} while(true);
?>

说明:除非在服务器上关闭这个程序,否则这断代码将永远执行下去。

扩展示例2则


Mark一下,大家有兴趣可以看看。

实现功能1:每10秒记录时间到文件,永不停歇。

<?php
// 后台运行
ignore_user_abort();
// 取消脚本运行时间的超时上限
set_time_limit(0);

// 调试日志[开始]
echo 'start.';
// 执行轮循
while(!file_exists('close.txt')) {
    // 打开文件
    $handle = fopen('test.txt', 'a+');
    // 写入日期
    fwrite($handle,date("Y-m-d H:i:s") . " 成功了!
");
    // 关闭文件
    fclose($handle);
    // 休眠10秒钟
    sleep(60);
}
// 调试日志[结束]
echo 'end.';
?>

实现功能2:每5秒输出语句,永不停歇。

<?php
// 设置输出类型
header("Content-Type: text/plain");
// 取消脚本运行时间的超时上限
set_time_limit(0);

// 定义字符串
$str = "Hello World" . "
";
// 循环定时执行
while (isset($str)) {
    // 输出日志
    echo $str;
    // 刷新缓冲区
    flush();
    ob_flush();
    // 休眠5秒钟
    sleep(5);
}

 

本站文章为 宝宝巴士 SD.Team 原创,转载务必在明显处注明:(作者官方网站: 宝宝巴士 
转载自【宝宝巴士SuperDo团队】 原文链接: http://www.cnblogs.com/superdo/p/4793943.html

 

原文地址:https://www.cnblogs.com/superdo/p/4793943.html