精美而实用的网站,关注web编程技术、网站运营、SEO推广,让您轻松愉快的学习

当php程序加载结束后, 可以在 函数中做许多工作, 如获取错误信息, 异常归档, 释放资源, debug跟踪..... 等,青岛星网下面跟大家分享:PHP程序加载结束后可统一收尾的函数。

PHP程序加载结束后可统一收尾的函数

<?php
# 首先我们创建一个函数. 或者类, 本文件简单点, 就用函数.
function die_fun($e){
    # 检测一下连接过程, 普通访问时, connection_status会返回0, 当页面超过30秒运行后, 会返回2. 
    # 1 异常退出 在什么时候表现呢, 暂时没有测试出来. 
    echo 'connection_status: '. $s = connection_status(); // 0 - NORMAL(正常)1 - ABORTED(异常退出)2 - TIMEOUT(超时)OR 3
     
    # 基本上connection_aborted会返回1, 表示已关闭. 另一种情况优化要在多线程里面testing
    echo 'connection_aborted: '.$ab = connection_aborted(); // 已关闭[1]
     
    # 利用参数来确定是哪些动作.
    if($e == 0){
        echo 'class close<br />'; // 类结束
    }else{
        echo 'web close<br />';  // 页面加载结束.
    }
     
    # 由于进程已经结束, 系统无法知道当前路径, 所以在里面操作文件时, 都需要用绝对路径.
    file_put_contents(DIR_PATH.'/a.txt', $s.'==='.$ab."\n\r", FILE_APPEND);
}
 
# 定义一个路径常量.
define('DIR_PATH', getcwd());
 
# 注册一个执行一次的函数, 刷新一次, 结束后会执行一次.
# 调用了die_fun, 或许你会问, 怎么掉用类. 换种思维, 在函数中把类调用起来.
# register_shutdown_function支持第二个参数, 自己试试.
register_shutdown_function('die_fun'); 
 
# 实例化类, 很普通的实例, 主要是让__construct能够跟register_shutdown_function溶合起来.
# 同样的道理, 类实例化之后, 当页面加载结束后, 会调用__destruct, 假如多个类, 它会调用多次. 你可以用参数将__CLASS__传进去, 
$obj = new demo();
 
# 我们同时也继续增加异常的统一化. set_exception_handler跟set_error_handler是两码事, 注意区分.
# 这儿的die_fun函数$e的值就是一个对象了, 具体可参考一下示例. throw new Exception抛出异常后, 就被die_fun接住.
set_exception_handler('die_fun');
 
 
 
class demo{
    public $db;
    public function __construct(){}
     
    public function __destruct(){
        die_fun(0);  //这儿也调用了diefun
    }
}
 
?>
Tags:PHP 函数