PHP程序员学习笔记|如何学习PHP

个人总结的PHP学习方法


巧用register_shutdown_function判断php程序是否执行完

2017-6-28 0phpcom 经典文章


php中的异常捕获没有java的强大,有些情况下,需要知道某段php程序业务是否正常执行完,可以用register_shutdown_function函数来辅助实现。掌握此函数,对php学习又提高了一层。


register_shutdown_function函数的用法:当php脚本运行结束后,会回调一个您指定的函数里面的逻辑。(注意,以下两种情况不会执行回调函数:1.程序有语法错误;2.register_shutdown_function函数前,发生了致命错误,所以下面例子,我将register_shutdown_function放到了程序的最上面。)


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



php范例参考与解析:


<?php


register_shutdown_function('myFun'); //放到最上面,不然如果下面有致命错误,就不会调用myFun了。

$execDone = false; //程序是否成功执行完(默认为false)


/**

 ********************* 业务逻辑区*************************

 */

$tas = 3;

if($tas == 3)

{

  new daixiaorui();

}


/**

 ********************* 业务逻辑结束*************************

 */

$execDone = true; //由于程序由上至下执行,因此当执行到此后,则证明逻辑没有出现致命的错误。


function myFun()

{

  global $execDone;

  if($execDone === false)

  {

    file_put_contents("E:/myMsg.txt", date("Y-m-d H:i:s")."---error: 程序执行出错。\r\n", FILE_APPEND);

    /******** 以下可以做一些处理 ********/

  }

}


« redis权限认证(设置密码)的方法 | redis压力测试详解»
发表评论:


站点统计
  • 建站日期: 2015-2-10 18:22
  • 运行时间: 3334 天
  • 日志总数: 221 篇
  • 置顶日志: 0 篇
  • 草稿数目: 15 篇
  • 待审文章: 0 篇
  • 页面数量: 0 个
  • 评论数量: 53 条
  • 微语数量: 5 条
  • 微语评论: 0 条
  • 友链数量: 1 个
  • 加密文章: 1 篇
  • 分类总量: 10 个
  • 父分类数: 10 个
  • 子分类数: 0 个
  • 用户数量: 1 人
  • 管理员数: 1 人
  • 驻站作者: 0 位
  • 标签数量: 11 个
  • 附件总量: 223 件
  • 最后发表: 2021-5-8 16:17



订阅Rss