国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

webman/queue 如何優(yōu)雅拋出異常?

youfeed

throw new \Excption('異常');
這樣異常給redis弄了一堆報錯打印

嘗試以下操作

1. config/app.php

debug=>false
error_reporting=>1024

這個是webman的錯誤打印配置

2.嘗試使用trigger_error("超時重試2",E_USER_NOTICE)

還是會打印錯誤堆棧

找尋源碼 webman/queue 是對 workerman/redis-queue的優(yōu)雅封裝,搞不定

因?yàn)槲乙呀?jīng)選擇主動拋出異常重試,堆棧信息是否保存到redis起碼可選的吧~ redis - fail表體積爆炸

代碼分析 vendor/workerman/redis-queue/src/Client.php pull 200行

隊(duì)列回流機(jī)制 就是 接收ExceptionError的錯誤,增加一個配置項(xiàng)根據(jù) 是否存儲堆棧 $package['error']即可修復(fù)

$callback = $this->_subscribeQueues[$redis_key];
try {
\call_user_func($callback, $package['data']);
} catch (\Exception $e) {
if (++$package['attempts'] > $this->_options['max_attempts']) {
$package['error'] = (string) $e;
$this->fail($package);
} else {
$this->retry($package);
}
echo $e;
} catch (\Error $e) {
if (++$package['attempts'] > $this->_options['max_attempts']) {
$package['error'] = (string) $e;
$this->fail($package);
} else {
$this->retry($package);
}
echo $e;
}
1169 2 2
2個回答

youfeed

主基礎(chǔ)插件已提交修復(fù) 等待合并

我在已提交 pull request 如果官方合并,主動拋出異常 不會幫報錯保存到 redis fail

開啟打印錯誤堆棧到redis

config/plugin/webman/redis-queue/redis.php


<?php
return [
'default' => [
'host' => 'redis://127.0.0.1:6379',
'options' => [
'auth' => null, // 密碼,字符串類型,可選參數(shù)
'db' => 0,            // 數(shù)據(jù)庫
'prefix' => '',       // key 前綴
'max_attempts'  => 5, // 消費(fèi)失敗后,重試次數(shù)
'retry_seconds' => 5, // 重試間隔,單位秒
'debug' => true       // 默認(rèn)false 為true主動拋出的異常 保存到失敗隊(duì)列
]
],
];
  • 暫無評論
walkor 打賞

composer require workerman/redis-queue ^1.2.0 webman/redis-queue ^1.3.1
升級下,現(xiàn)在不記錄異常調(diào)用棧到redis了,記到rutime/log日志文件里了

年代過于久遠(yuǎn),無法發(fā)表回答
??