引言:如何模拟那些自动轮循的服务,像守护进程(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

[PHP学习教程 - 系统]002.模拟守护进程(Daemon)-程序永远在后台运行的更多相关文章

  1. Mac系统的launchd、守护进程daemon(2013笔记整理)

    1. launchd Mac系统下通用的进程管理器,是Mac系统下非常重要的一个进程,一般来说该进程不允许直接以命令行的形式调用.只能通过其控制管理界面,launchctl来进行控制. launchd ...

  2. python 守护进程 daemon

    python 守护进程 daemon # -*-coding:utf-8-*- import sys, os '''将当前进程fork为一个守护进程 注意:如果你的守护进程是由inetd启动的,不要这 ...

  3. Linux守护进程daemon

      守护进程,也就是通常说的Daemon进程,是Linux中的后台服务进程.它是一个生存期较长的进程,通常独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件.守护进程常常在系统引导装入时启 ...

  4. linux 守护进程 daemon

    Linux的Service/Daemon你真的懂了吗? Linux 守护进程的启动方法 linux系统编程之进程(八):守护进程详解及创建,daemon()使用 linux守护进程 daemon 详解

  5. Linux学习笔记(9)-守护进程

    明天学这个!! ---------------------------------------------------------- 守护进程(Daemon)是运行在后台的一种特殊进程.它独立于控制终 ...

  6. Linux系统编程之--守护进程的创建和详解【转】

    本文转载自:http://www.cnblogs.com/mickole/p/3188321.html 一,守护进程概述 Linux Daemon(守护进程)是运行在后台的一种特殊进程.它独立于控制终 ...

  7. [linux] C语言Linux系统编程-做成守护进程

    守护进程: 必须是init进程的子进程,运行在后台,不与任何控制终端相关联. 通过以下步骤成为守护进程 1.调用fork()创建出来一个新的进程,这个新进程会是将来的守护进程 2.在新守护进程的父进程 ...

  8. linux系统编程:守护进程详解及创建,daemon()使用

    一,守护进程概述 Linux Daemon(守护进程)是运行在后台的一种特殊进程.它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件.它不需要用户输入就能运行而且提供某种服务,不是对整个 ...

  9. docker 学习笔记20:docker守护进程的配置与启动

    安装好docker后,需要启动docker守护进程.有多种启动方式. 一.服务的方式 因为docker守护进程被安装成服务.所以,可以通过服务的方式启停docker守护进程,包括查看状态. sudo ...

随机推荐

  1. 4)drf序列化组件 Serializer(偏底层)、ModelSerializer(重点)、ListModelSerializer(辅助群改)

    知识点:Serializer(偏底层).ModelSerializer(重点).ListModelSerializer(辅助群改) 一.Serializer 偏底层 一般不用 理解原理 1.序列化准备 ...

  2. idea 将项目托管到 Git 报错:Can't finish Gitee sharing process

    在idea中报: Can't finish Gitee sharing processSuccssully created project 'dmp' on Gitee. but initial co ...

  3. Android JetPack组件-CameraX初探

    CameraX 又是一个 Google 推出的 JetPack 组件 ,是一个新鲜玩意儿,故给大家分享下我在项目中的使用过程心得.. CameraX 是什么? Google 开发者文档 对 Camer ...

  4. CRT 连接AWS-EC2

    crt使用.pem登录AWS服务器 网上看到方案如下,看到大部分人都成功了,一头雾水,我的crt不需要pub文件.... chmod xxx.pem ssh-keygen -p -f xxx.pem ...

  5. Linux之进程管理工具supervisor

    环境:CentOS 7官方文档:http://supervisord.org/ 安装 # yum install -y epel-release # yum install -y supervisor ...

  6. 第三章:Python高级编程-深入类和对象

    第三章:Python高级编程-深入类和对象 Python3高级核心技术97讲 笔记 3.1 鸭子类型和多态 """ 当看到一直鸟走起来像鸭子.游泳起来像鸭子.叫起来像鸭子 ...

  7. Flutter 首页必用组件NestedScrollView

    老孟导读:昨天Flutter 1.17版本重磅发布,新的版本主要是优化性能.修复bug,有人觉得此版本毫无亮点,但也从另一方面体现了Flutter目前针对移动端已经较为完善,想了解具体内容,文末有链接 ...

  8. Vuel路由跳转动画

    1.App.vue中添加 <transition :name="animate"> <router-view/> </transition> e ...

  9. kafka学习 之 Quickstart

    第一步:安装启动kafka 官网链接:https://www.apache.org/dyn/closer.cgi?path=/kafka/2.3.0/kafka_2.11-2.3.0.tgz 进入指定 ...

  10. Day_09【常用API】扩展案例8_计算字符'j'和字符串'java'在字符串中出现的次数

    需求说明 定义如下字符串: String str = "javajfiewjavajfiowfjavagkljjava"; 请分别定义方法统计出: 1.字符串中:字符j的数量 2. ...