Laravel 在异常捕获时具有可读的日志和堆栈跟踪,例如:
production.ERROR: Command "test" is not defined.
Did you mean this?
make:test {"exception":"[object] (Symfony\\Component\\Console\\Exception\\CommandNotFoundException(code: 0): Command \"test\" is not defined.
Did you mean this?
make:test at {root}/vendor/symfony/console/Application.php:618)
[stacktrace]
#0 {root}/vendor/symfony/console/Application.php(229): Symfony\\Component\\Console\\Application->find('test')
#1 {root}/vendor/symfony/console/Application.php(148): Symfony\\Component\\Console\\Application->doRun(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#2 {root}/vendor/laravel/framework/src/Illuminate/Console/Application.php(88): Symfony\\Component\\Console\\Application->run(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#3 {root}/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(121): Illuminate\\Console\\Application->run(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#4 {root}/artisan(37): Illuminate\\Foundation\\Console\\Kernel->handle(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#5 {main}
"}
Run Code Online (Sandbox Code Playgroud)
问题是:是否可以自己捕获异常,并记录相同格式的stacktrace,并继续程序执行。到目前为止,我正在记录一个Log::error(json_encode(debug_backtrace()));非常丑陋且难以追踪的错误。示例代码:
try {
foo();
} catch(\Exception $e) {
Log::error(json_encode(debug_backtrace()));
}
bar();
Run Code Online (Sandbox Code Playgroud) 假设有一组数字
1,2,3,4,5,6,7,8,9,10
我想在数字集合中找出几个组合,使得它的总和等于已知数字,例如,18.我们可以发现5,6,7是匹配的(5 + 6 + 7 = 18) .
组合中的数字不能重复,并且组中的数字可能不连续.
我写了一个C#程序来做到这一点.该程序是随机的,以获取数字以形成组合并检查组合的总和是否等于已知数.但是,程序发现的组合可能会重复,这会使进度无效.
我想知道是否有任何有效的算法来找出这样的组合.
这是我的代码的一部分.
int Sum = 0;
int c;
List<int> Pick = new List<int>();
List<int> Target = new List<int>() {some numbers}
Target.Sort();
while (!Target.Contains(Sum))
{
if (Sum > Target[Target.Count - 1])
{
Pick.Clear();
Sum = 0;
}
while (true)
{
if (Pick.IndexOf(c = Math0.rand(0, Set.Count - 1)) == -1)
{
Pick.Add(c);
}
//Summation Pick
Sum = 0;
for (int i = 0; i < Pick.Count; i++)
Sum += Set[Pick[i]]; …Run Code Online (Sandbox Code Playgroud) 当此命令php artisan queue:restart运行时,所有队列工作器都会正常重启。
但是,如果这些命令supervisorctl reload还是supervisorctl restart运行,后面运行的命令是什么?他们会强行杀死队列工作人员并重新启动工作人员吗?
有时,当 supervisor 配置更改时,supervisor 需要重新加载并重新启动。
如果主管没有优雅地启动队列工作人员,有什么解决方法可以使它不会强行杀死工作人员,这样我就不需要做一些清理工作?