我正在启动一个新项目(php),我们希望有很多用户。如果发现一些错误,人们通常会发送电子邮件,或者为此在特定页面上写。
但是是否有可能以某种方式自动让我们的开发人员知道(通过邮件或小型定制应用程序),当用户无法工作或点击 404 页面时,哪里出了问题以及什么设备(浏览器和平台)用户使用?
如果是这样,我们可以查看一个列表并快速找到我们网站中最有问题的区域,并在我们的用户变得如此恼火以至于他们会写信给我们之前解决这些问题。
我正在启动一个新项目(php),我们希望有很多用户。如果发现一些错误,人们通常会发送电子邮件,或者为此在特定页面上写。
但是是否有可能以某种方式自动让我们的开发人员知道(通过邮件或小型定制应用程序),当用户无法工作或点击 404 页面时,哪里出了问题以及什么设备(浏览器和平台)用户使用?
如果是这样,我们可以查看一个列表并快速找到我们网站中最有问题的区域,并在我们的用户变得如此恼火以至于他们会写信给我们之前解决这些问题。
是的,你可以这样做。有很多方法,但我向你展示了一个非常简单的方法来做到这一点,
您需要创建一个自定义错误自定义错误处理程序。在那里,您可以处理所有错误并将它们包含在电子邮件和日志中
<?php
function errorHandler($errno, $errstr, $errfile, $errline) {
static $db;
if (empty($db)) {
$db = new PDO(DSN, DBUSER, DBPASS);
}
$query = "INSERT INTO errorlog (severity, message, filename, lineno, time) VALUES (?, ?, ?, ?, NOW())";
$stmt = $db->prepare($query);
switch ($errno) {
case E_NOTICE:
case E_USER_NOTICE:
case E_DEPRECATED:
case E_USER_DEPRECATED:
case E_STRICT:
$stmt->execute(array("NOTICE", $errstr, $errfile, $errline));
break;
case E_WARNING:
case E_USER_WARNING:
$stmt->execute(array("WARNING", $errstr, $errfile, $errline));
break;
case E_ERROR:
case E_USER_ERROR:
$stmt->execute(array("FATAL", $errstr, $errfile, $errline));
exit("FATAL error $errstr at $errfile:$errline");
default:
exit("Unknown error at $errfile:$errline");
}
}
set_error_handler("errorHandler");
$test = 5;
if ($test > 1) {
trigger_error("Value of \$test must be 1 or less", E_USER_NOTICE);
}
你可以在这里为所欲为。电子邮件或日志事件:)