zoukankan      html  css  js  c++  java
  • 利用php的register_shutdown_function来记录php的输出日志

    最近在做的一个项目..由于全是通过远程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."
    ";
            }
        }
        foreach($_SERVER as $k=>$v){
            $server.=$k." = ".$v."
    ";
        }
        $content=date('Y-m-d H:i:s')." REQUEST信息: 
    ".$request."
    SERVER信息: 
    ".$server."
    ";
        ob_start();
        function shutdown_func($file){
            $content=date('Y-m-d H:i:s')." 输出的信息: 
    ".ob_get_contents()."
    ";
            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输出返回的信息.

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

  • 相关阅读:
    Vue开发之vue-router的基本使用
    react监听URL的正确方式
    Electron Windows增加托盘悬浮框功能
    vue自定义标签和单页面多路由实现
    如何通过带有Vue插槽的组件传递HTML内容
    Flutter使用JsBridge方式处理Webview与H5通信
    npm实用知识_命令合集
    <keep-alive> 缓存及其缓存优化原理
    深入学习和理解 Redux
    Centos7使用Yum安装高版本的LNMP
  • 原文地址:https://www.cnblogs.com/wicub/p/5849803.html
Copyright © 2011-2022 走看看