如何在我的 PHP 应用程序中收集有关错误的客户端信息?

Posted

技术标签:

【中文标题】如何在我的 PHP 应用程序中收集有关错误的客户端信息?【英文标题】:How can I collect client-side information on errors in my PHP application? 【发布时间】:2011-11-23 05:50:09 【问题描述】:

我正在使用 php 和 Yii 组合一个企业应用程序。如果出现问题或错误,我希望用户可以通过一种简单的方法报告问题或错误,但是我很难确定捕获/记录系统状态以帮助复制问题的最佳方法。

我一直在寻找一个扩展或库来集成所有东西,但可能不存在。否则我需要寻找一种方法来序列化 DOM 以供以后评估或类似的其他方法。

因此,用户可以单击“报告错误”按钮,该按钮捕获站点的状态并弹出一个带有“发生了什么?”的弹出框。用户可以填写的文本框。

我有哪些选择?

【问题讨论】:

【参考方案1】:

看看Airbrake(以前称为 Hoptoad)及其php notifier。默认情况下,它们不会保存完整的 DOM 代码,但我认为您可以扩展通知程序来做到这一点。

要允许用户触发报告,您可以使用 ajax 和自定义异常。

他们有免费计划,而且设置很容易。

【讨论】:

【参考方案2】:

要获取当前页面的 html 源代码,您可以使用这个 javascript sn-p:

var htmlSource = document.getElementsByTagName('html')[0].innerHTML;

您可能想要保存的另一条信息当然是当前 URL。您可以使用jQuery.post 将所有这些发送到服务器,例如

$.post("<?php echo CController::createUrl(...); ?>",
       
           url: document.location.href,
           html: document.getElementsByTagName('html')[0].innerHTML,
       );

如果没有某种可以调用的服务器端助手,我认为您不能做更多的事情。您究竟需要这个错误报告功能来实现什么功能?

【讨论】:

以上是关于如何在我的 PHP 应用程序中收集有关错误的客户端信息?的主要内容,如果未能解决你的问题,请参考以下文章

为啥 PHP 的垃圾收集器会降低性能,没有它如何管理内存?

错误:Firebase ID 令牌已过期

如何使用 Laravel(Eloquent 的)地图收集功能重构 php foreach

无法在我的数据库中更新查询,收到有关可更新查询的错误

在我的网站上设置 Discord oauth2 登录(使用 PHP?)

加密/匿名用户健康数据 php/mySQLi