文档章节

利用php的register_shutdown_function来记录php的输出日志

酒逍遥
 酒逍遥
发布于 2012/09/14 14:22
字数 393
阅读 4310
收藏 4

最近在做的一个项目..由于全是通过远程http请求来调用php的接口程序..

接收到的参数和返回的内容对开发人员来说都是未知不可见的..

虽然可以通过直接在脚本中模拟请求..但由于实际环境复杂的多..调试极其不方便.

于是想是否可以写一个函数用来记录对php接口调用的情况.

想到以前看到过的一个php函数register_shutdown_function..

该函数的作用是注册一个函数,当php脚本执行完成,或者代码中调用了exit ,die这样的代码之后,执行预先注册好的函数.

这样我们就可以在该函数中记录php调用执行的情况了.

简单写了下,看起来应该可以用了

<?php
function bdebug(){
$file="bdebug_log.txt";
if($_REQUEST){
foreach($_REQUEST as $k=>$v){
$request.=$k." = ".$v."\r\n";
}
}
foreach($_SERVER as $k=>$v){
$server.=$k." = ".$v."\r\n";
}
$content=date('Y-m-d H:i:s')." REQUEST信息: \r\n".$request."\r\nSERVER信息: \r\n".$server."\r\n";
ob_start();
function shutdown_func($file){
$content=date('Y-m-d H:i:s')." 输出的信息: \r\n".ob_get_contents()."\r\n";
file_put_contents($file,$content,FILE_APPEND);
}
register_shutdown_function('shutdown_func',dirname(__FILE__).DIRECTORY_SEPARATOR.$file);
file_put_contents($file,$content,FILE_APPEND);
}
?>

需要调用时 包含此文件执行bdebug() 即可.当php被调用时,会在该文件同目录下生成日志文件

用以记录调用的相关信息.

我这里只记录了 request ,server 以及php输出返回的信息.

具体可根据实际需要增减要记录的信息.

© 著作权归作者所有

酒逍遥

酒逍遥

粉丝 49
博文 40
码字总数 35454
作品 0
武汉
高级程序员
私信 提问
加载中

评论(1)

aliasok
aliasok
#此处输入14912254软件名#
register_shutdown_function 函数详解

registershutdownfunction 函数详解 php开发测试及线上的时候可以根据不同情况设定错误和异常处理需要用到有 设定错误和异常处理三函数 1 2 3 下面讲一下registershutdownfunction() 函数. 功...

李佳顺
06/03
5
0
PHP中register_shutdown_function函数

函数说明 定义:该函数是来注册一个会在PHP中止时执行的函数 参数说明: 注册一个 callback ,它会在脚本执行完成或者 exit() 后被调用。 callback:待注册的中止回调 parameter:可以通过传...

Ocean_K
04/04
9
0
PHP register_shutdown_function

PHP registershutdownfunction 脚本时常死掉,而且并不总是那么好看. 我们可不想给用户显示一个致命错误,又或者一个空白页(在displayerrors设为off的情况下) . PHP中有一个叫做 registershut...

SibylY
2016/12/15
9
0
PHP中处理函数的函数(Function Handling Functions)

calluserfuncarray — 让参数以数组的形式调用一个函数 calluserfunc — 调用一个存在的函数 createfunction — 建立一个函数 funcgetarg — 获取函数中某个参数的值 funcgetargs — 获取函数...

酸奶喝不完
2012/09/11
51
0
另类方式实现PHP后台运行

本文摘自《草根》杂志第四期 最近在考虑项目为用户群发邮件时想到了这个方法,觉得还有用,所以记录下来(项目情况是:用户要根据实际情况给他的客户发邮件,他的客户的数量是成千上万,根据...

张沫
2010/10/15
3.1K
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周六乱弹 —— 早上儿子问我他是怎么来的

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @凉小生 :#今日歌曲推荐# 少点戾气,愿你和这个世界温柔以待。中岛美嘉的单曲《僕が死のうと思ったのは (曾经我也想过一了百了)》 《僕が死の...

小小编辑
今天
2.4K
15
Excption与Error包结构,OOM 你遇到过哪些情况,SOF 你遇到过哪些情况

Throwable 是 Java 中所有错误与异常的超类,Throwable 包含两个子类,Error 与 Exception 。用于指示发生了异常情况。 Java 抛出的 Throwable 可以分成三种类型。 被检查异常(checked Exc...

Garphy
今天
41
0
计算机实现原理专题--二进制减法器(二)

在计算机实现原理专题--二进制减法器(一)中说明了基本原理,现准备说明如何来实现。 首先第一步255-b运算相当于对b进行按位取反,因此可将8个非门组成如下图的形式: 由于每次做减法时,我...

FAT_mt
昨天
40
0
好程序员大数据学习路线分享函数+map映射+元祖

好程序员大数据学习路线分享函数+map映射+元祖,大数据各个平台上的语言实现 hadoop 由java实现,2003年至今,三大块:数据处理,数据存储,数据计算 存储: hbase --> 数据成表 处理: hive --> 数...

好程序员官方
昨天
61
0
tabel 中含有复选框的列 数据理解

1、el-ui中实现某一列为复选框 实现多选非常简单: 手动添加一个el-table-column,设type属性为selction即可; 2、@selection-change事件:选项发生勾选状态变化时触发该事件 <el-table @sel...

everthing
昨天
21
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部