引言:如何模拟那些自动轮循的服务,像守护进程(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") . " 成功了!\n");
// 关闭文件
fclose($handle);
// 休眠10秒钟
sleep(60);
}
// 调试日志[结束]
echo 'end.';
?>

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

<?php
// 设置输出类型
header("Content-Type: text/plain");
// 取消脚本运行时间的超时上限
set_time_limit(0); // 定义字符串
$str = "Hello World" . "\n";
// 循环定时执行
while (isset($str)) {
// 输出日志
echo $str;
// 刷新缓冲区
flush();
ob_flush();
// 休眠5秒钟
sleep(5);
}

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

最新文章

  1. [算法][LeetCode]Linked List Cycle &amp; Linked List Cycle II——单链表中的环
  2. Linux_know
  3. boost multi_index
  4. Main函数 &amp; Autoreleasepool
  5. iOS开发拓展篇—xib中关于拖拽手势的潜在错误
  6. QueryTask查询结果最多500条的问题
  7. 论Visual Studio和.NET Framework
  8. SOME USEFUL MACHINE LEARNING LIBRARIES.
  9. Query的选择器中的通配符[id^=&#39;code&#39;]或[name^=&#39;code&#39;]
  10. CentOS6.5 python 2.6升级到2.7
  11. atexit注册的函数是在main函数之后执行?
  12. topcoder 643 DIV2
  13. cocos2dx 内存管理的理解
  14. php获取上传多个文件缺失
  15. mysqld --debug-sync
  16. codeforces C. Little Pony and Expected Maximum
  17. Hibernate 注解多对一 要求在多那边产生一个外键而不会另外产生一个表
  18. 工作总结:qsort函数用法
  19. poj 2274 The Race 最小堆
  20. JavaSwing JScrollPane的使用

热门文章

  1. CodeForces - 1245 B - Restricted RPS(贪心)
  2. LCA 学习总结
  3. RF(自定义关键字)
  4. BAN-Bank Notes(更麻烦的背包方案)
  5. VSCode最强助攻
  6. spring中bean的常用属性
  7. thrift的使用
  8. HDU 2012 (水)
  9. Dotnet core使用JWT认证授权最佳实践(二)
  10. react 学习前期用到的插件