mysql shutdown()函数_register_shutdown_function() 函数的学习及使用

摘要:register_shutdown_function定义:该函数是来注册一个会在PHP中止时执行的函数参数说明:register_shutdown_function ($callback, $para...

register_shutdown_function

定义:该函数是来注册一个会在PHP中止时执行的函数

参数说明:register_shutdown_function ($callback, $parameter)

注册一个 callback ,它会在脚本执行完成或者 exit() 后被调用。

$callback:待注册的中止回调[必须]

$parameter:可以通过传入额外的参数来将参数传给中止函数[可选]

可以多次调用 register_shutdown_function() ,这些被注册的回调会按照他们注册时的顺序被依次调用。 如果你在注册的方法内部调用 exit(), 那么所有处理会被中止,并且其他注册的中止回调也不会再被调用。

PHP中止的情况有三种:

1.程序执行完成;

2.exit/die导致的中止;

3.发生致命错误中止;

例1(程序执行完成):register_shutdown_function('test');

function test()

{

echo '这个是中止方法test的输出';

}

echo '结束代码
';

运行结果:结束代码

这个是中止方法test的输出

例2(exit导致的中止):register_shutdown_function('test');

function test()

{

echo '这个是中止方法test的输出';

}

exit();

echo '结束代码
';

运行结果:这个是中止方法test的输出

例3(发生致命错误中止):register_shutdown_function('test');

function test()

{

echo '这个是中止方法test的输出';

}

// 这里会发生致命错误

$a = new a();

echo '结束代码
';

运行结果:Fatal error: Class 'a' not found in E:\phpStudy\PHPTutorial\WWW\a.php on line 47

这个是中止方法test的输出

例4(在类中的使用):class test {

public function __construct() {

register_shutdown_function(array($this, 'a'), 'hello');

}

public function a($str) {

echo "class test->a():" . $str;

}

}

$t = new test;

echo '结束代码
';

运行结果:结束代码

class test->a():hello

注意,以下两种情况不会执行回调函数:

1.程序有语法错误;

2.register_shutdown_function函数前,发生了致命错误;

学以致用:

可以使用该函数可以用来捕获致命错误并且在发生致命错误后恢复流程处理!

例如要做一个消费队列,因为某条有问题的数据导致致命错误,如果这条数据不处理掉,那么整个队列都会导致瘫痪的状态,这样可以用以下方法来解决。即:如果捕获到有问题的数据导致错误,则在回调函数中将这条数据处理掉就可以了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值