/start 调用错误

This commit is contained in:
root
2025-05-24 11:38:26 +00:00
parent 98325f08f7
commit bba182ff7a
2 changed files with 88 additions and 5 deletions
+83
View File
@@ -0,0 +1,83 @@
<?php
namespace app\service;
use think\facade\Db;
class ErrorModel {
private $MASTER;
private $botid;
private $token;
public function __construct ($token) {
$botkeymiyao = explode(":", $token);
$this->botid = (int) $botkeymiyao[0];
$this->token=$token;
$masterid = Db::name("conf")->where("key", 'masterid')->value('value');
$this->MASTER=$masterid;
set_error_handler (array ($this, 'errorHandler'));
set_exception_handler (array ($this, 'exceptionHandler'));
}
public function errorHandler ($errno, $errstr, $errfile, $errline) {
$GLOBALS['statistics']['error_total']++;
$this->checkPlugin ();
$errMsg = '在 ' . $errfile . ' 的第 ' . $errline . ' 行发生了一个错误:' . "\n" . $errstr;
$this->sendError ($this->MASTER, $this->replacePath ($errMsg));
}
public function exceptionHandler ($exception) {
$GLOBALS['statistics']['error_total']++;
$this->checkPlugin ();
$errMsg = $exception->getMessage() . "\n";
foreach ($exception->getTrace () as $i => $ep_d) {
$errMsg .= '在 ' . $ep_d['file'] . ' 的第 ' . $ep_d['line'] . ' 行发生了一个异常:' . "\n";
if (!empty ($ep_d['class'])) {
$errMsg .= $ep_d['class'] . '->';
}
if (!empty ($ep_d['function'])) {
$errMsg .= $ep_d['function'] . ' ';
$errMsg .= '(';
if (!empty ($ep_d['args'])) {
$errMsg .= var_export ($ep_d['args'], true);
}
$errMsg .= ')';
}
$errMsg .= "\n";
}
$this->sendError ($this->MASTER, $this->replacePath ($errMsg));
}
public function sendError ($text = '发生了一个错误') {
/** 判断是否发送报告 */
if (DEBUG) {
$url = 'https://api.telegram.org/bot' . $this->token . '/sendMessage';
$postdata = [
'chat_id' => $this->MASTER,
'text' => $text
];
$ch = curl_init ();
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_POSTFIELDS, $postdata);
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
$re = curl_exec ($ch);
curl_close ($ch);
}
}
private function checkPlugin () {
if (isset ($GLOBALS['cuPlugin'])) {
$this->db->update ('plugins', [
'lasterror' => time ()
], [
'pcn' => $GLOBALS['cuPlugin']
]);
}
}
private function replacePath ($str) {
return str_replace (APP_PATH, '', $str);
}
}
?>