PHP错误处理清除缓冲区

PHP错误处理清除缓冲区,php,error-handling,whoops,Php,Error Handling,Whoops,问题 在过程脚本中,PHP页面处理程序的内容将与应用程序缓冲区输出的部分内容混合。 呜呜声可以在隐藏的html标记中显示为混乱或输出 问题 如何在Whoops处理程序缓冲区之前清除上一个缓冲区?下面是我的解决方案: 在脚本的最早阶段,可能仅在调试或开发人员模式下(如我所做的),您需要执行以下操作: 然后你宣布我做了什么: if(DEVELOPER_DEBUG === true) { $_whoops = new \Whoops\Run(); $_whoops->pushH

问题

在过程脚本中,PHP页面处理程序的内容将与应用程序缓冲区输出的部分内容混合。 呜呜声可以在隐藏的html标记中显示为混乱或输出

问题


如何在Whoops处理程序缓冲区之前清除上一个缓冲区?

下面是我的解决方案:

在脚本的最早阶段,可能仅在调试或开发人员模式下(如我所做的),您需要执行以下操作:

然后你宣布我做了什么:

if(DEVELOPER_DEBUG === true)
{
    $_whoops = new \Whoops\Run();

    $_whoops->pushHandler(function(){
        ob_clean();
    });

    $_handler = new \Whoops\Handler\PrettyPageHandler();
    $_whoops->pushHandler($_handler);
    $_whoops->register();
}
在我的过程脚本使用案例中,这是完美的,可以在Whoops开始自己的输出之前清除任何初始生成的缓冲区

为什么它有效

ob_start()可以多次调用,缓冲区刷新或清除函数的调用次数需要与按顺序调用start的次数相同

通过让你的应用程序启动它自己的缓冲区,它使它成为一个可以被清除的资源,Whoops也总是启动它自己的缓冲区,所以通过注册一个处理程序来清除第一个缓冲区(你的应用程序),然后在发生错误时,Whoops可以清除之前的缓冲区

缓冲区控制

例如,ob_start的每次调用都会创建一个增量缓冲区

如果调用ob_start 3次,则需要调用ob_flush 3次,以便输出所有缓冲内容

如果调用它一次,则只会清除或刷新在声明下一个ob_start之前生成的内容


可以适用于OOP。

以下解决方案适用于我:

在脚本的最早阶段,可能仅在调试或开发人员模式下(如我所做的),您需要执行以下操作:

然后你宣布我做了什么:

if(DEVELOPER_DEBUG === true)
{
    $_whoops = new \Whoops\Run();

    $_whoops->pushHandler(function(){
        ob_clean();
    });

    $_handler = new \Whoops\Handler\PrettyPageHandler();
    $_whoops->pushHandler($_handler);
    $_whoops->register();
}
在我的过程脚本使用案例中,这是完美的,可以在Whoops开始自己的输出之前清除任何初始生成的缓冲区

为什么它有效

ob_start()可以多次调用,缓冲区刷新或清除函数的调用次数需要与按顺序调用start的次数相同

通过让你的应用程序启动它自己的缓冲区,它使它成为一个可以被清除的资源,Whoops也总是启动它自己的缓冲区,所以通过注册一个处理程序来清除第一个缓冲区(你的应用程序),然后在发生错误时,Whoops可以清除之前的缓冲区

缓冲区控制

例如,ob_start的每次调用都会创建一个增量缓冲区

如果调用ob_start 3次,则需要调用ob_flush 3次,以便输出所有缓冲内容

如果调用它一次,则只会清除或刷新在声明下一个ob_start之前生成的内容

可能适用于OOP