Untitled

(PHP 4, PHP 5, PHP 7)

register_shutdown_function — Register a function for execution on shutdown

执行PHP文件的时候,php会拉起一个进程或者线程。当这个进程或者线程执行完毕、或者异常中断,或使用exit()、die() 函数中断的时候,就调用register_shutdown_function 中定义的函数。我认为这个功能更类似于钩子,这个函数建立在PHP的线程或者进程的监控之上。

可以通过下面的例子清晰的看到该函数的作用:

<?php
header("content-type:text/html;chaset=utf-8");

register_shutdown_function('user_shutdown');
register_shutdown_function('user_shutdown_2');

function user_shutdown()
{
echo "<font color='red'>hello world</font>";
echo "<br/>";
}

function user_shutdown_2()
{
echo "<font color='orange'>Are You OK</font>";
echo "<br/>";
}

echo 11111;
echo '<br/>';
echo 22222;
echo '<br/>';

class Demo
{
public function __construct()
{
register_shutdown_function(array($this, 'user_shutdown_3'));
}

public function getName()
{
echo "Hello China<br/>";
}

public function user_shutdown_3()
{
echo "I'm class shutdown method<br/>";
}

}

$DemoClass = new Demo();
$DemoClass->getName();

执行该文件,最后的结果如下:

11111
22222
Hello China
hello world
Are You OK
I'm class shutdown method

由此我们可以得出,在一个进程或者线程之上可以注册多个register_shutdown_function 函数。并且可以在类中注册该函数。类中该函数必须对外部暴露,必须使用public关键字修饰。

了解PHP中的register_shutdown_funcion的更多相关文章

  1. Python开源框架

    info:更多Django信息url:https://www.oschina.net/p/djangodetail: Django 是 Python 编程语言驱动的一个开源模型-视图-控制器(MVC) ...

  2. mapreduce中一个map多个输入路径

    package duogemap; import java.io.IOException; import java.util.ArrayList; import java.util.List; imp ...

  3. Hadoop 中利用 mapreduce 读写 mysql 数据

    Hadoop 中利用 mapreduce 读写 mysql 数据   有时候我们在项目中会遇到输入结果集很大,但是输出结果很小,比如一些 pv.uv 数据,然后为了实时查询的需求,或者一些 OLAP ...

  4. Python中的多进程与多线程(一)

    一.背景 最近在Azkaban的测试工作中,需要在测试环境下模拟线上的调度场景进行稳定性测试.故而重操python旧业,通过python编写脚本来构造类似线上的调度场景.在脚本编写过程中,碰到这样一个 ...

  5. .NET Core中的认证管理解析

    .NET Core中的认证管理解析 0x00 问题来源 在新建.NET Core的Web项目时选择“使用个人用户账户”就可以创建一个带有用户和权限管理的项目,已经准备好了用户注册.登录等很多页面,也可 ...

  6. Angular杂谈系列1-如何在Angular2中使用jQuery及其插件

    jQuery,让我们对dom的操作更加便捷.由于其易用性和可扩展性,jQuer也迅速风靡全球,各种插件也是目不暇接. 我相信很多人并不能直接远离jQuery去做前端,因为它太好用了,我们以前做的东西大 ...

  7. 关于CryptoJS中md5加密以及aes加密的随笔

    最近项目中用到了各种加密,其中就包括从没有接触过得aes加密,因此从网上各种查,官方的一种说法: 高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学 ...

  8. In-Memory:在内存中创建临时表和表变量

    在Disk-Base数据库中,由于临时表和表变量的数据存储在tempdb中,如果系统频繁地创建和更新临时表和表变量,大量的IO操作集中在tempdb中,tempdb很可能成为系统性能的瓶颈.在SQL ...

  9. SQL Server中的高可用性(2)----文件与文件组

        在谈到SQL Server的高可用性之前,我们首先要谈一谈单实例的高可用性.在单实例的高可用性中,不可忽略的就是文件和文件组的高可用性.SQL Server允许在某些文件损坏或离线的情况下,允 ...

随机推荐

  1. android 自定义控件——(五)按钮点击变色

    ----------------------------------按钮点击变色(源代码下有属性解释)------------------------------------------------- ...

  2. swift-分支

    swift相当于OC的比较 if后的括号可以省略 if后只能接bool值 if后的大括号不能省略 let num1 = 5.0 let num2 = 4.0 let boo :Bool = true ...

  3. 使用Fiddler抓取手机请求

    使用Fiddler抓取手机请求 Fiddler 手机 今天想尝试在手机上抓包,发现一个好玩的小工具——Fiddler. Fiddler是一个专门的抓包工具,可以模拟请求,修改请求,手机应用调试等.还是 ...

  4. 记录一次Quartz2D学习(六)

    (五)内主要讲到了一些图层操作 本次主要讲 图片的裁剪 6图片裁剪 6.1 图片裁剪 TIP: 可能会影响统一图层的显示 - (void)drawRect:(CGRect)rect { CGConte ...

  5. 我的敏捷、需求分析、UML、软件设计电子书 - 下载(持续更新中)

    我将所有我的电子书汇总在一起,方便大家下载!(持续更新) 文档保存在我的网站——软件知识原创基地上(www.umlonline.org),请放心下载. 1)软件设计是怎样炼成的?(2014-4-1 发 ...

  6. 4、项目的培训 - PMO项目管理办公室

    培训是一个重要的内容,在公司内部就有相关的培训.对于PMO项目管理办公室来说,就是相关的项目的技术和业务的培训,以期让项目组人员能够快速的学习好项目业务内容和所需要使用到的技术内容,然后尽快的进入项目 ...

  7. GitLab CI持续集成配置方案

    目录 1. 持续集成介绍 1.1 概念 1.2 持续集成的好处 2. GitLab持续集成(CI) 2.1 简介 2.2 GitLab简单原理图 2.3 GitLab持续集成所需环境 2.4 需要了解 ...

  8. 原创 C++应用程序在Windows下的编译、链接(四)动态链接

    4动态链接 4.1概述 在静态链接阶段,链接器为PE文件生成了导入表,导出表,符号表,并调整了Call指令后面的操作数,在程序调用的时候,能够直接地或者间接地定位到IAT中的某个位置,在PE文件中,该 ...

  9. 尝试解析js面试题(一)【转发】

    解析: 1.Foo.getName(); //2 1)结果执行的是Foo对象的一个叫做getName()的属性,而1.4.5中的getName都是作为函数存在,所以可以排除1.4.5 2)剩下两个中, ...

  10. python随心笔记

    print "hello,world" #打印hello,world print "1+1" #打印字符串 1+1 单引号和双引号是单行字符串 print [& ...