当php程序加载结束后, 可以在 函数中做许多工作, 如获取错误信息, 异常归档, 释放资源, debug跟踪..... 等,青岛星网下面跟大家分享: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 } } ?>