怎么利用register_shutdown_function判断php程序是否执行完
六月 15, 2019 | views
Comments 0
register_shutdown_function函数的用法:当php脚本运行结束后,会回调一个您指定的函数里面的逻辑。(注意,以下两种情况不会执行回调函数:1.程序有语法错误;2.register_shutdown_function函数前,发生了致命错误,所以下面例子,我将register_shutdown_function放到了程序的最上面。)
还有一种应用场景就是:要做一个消费队列,因为某条有问题的数据导致致命错误,如果这条数据不处理掉,那么整个队列都会导致瘫痪的状态,这样可以用以下方法来解决。即:如果捕获到有问题的数据导致错误,则在回调函数中将这条数据处理掉就可以了。
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);
- /******** 以下可以做一些处理 ********/
- }
- }
zend