gpt4 book ai didi

Laravel:在计划任务完成后发送松弛通知

转载 作者:行者123 更新时间:2023-12-02 02:42:34 27 4
gpt4 key购买 nike

我需要在使用 Laravel 构建的应用程序上安排一些任务,我想在这些任务完成输出后发送一个 slack 通知。

Laravel 提供了一个“后”钩子(Hook)(https://laravel.com/docs/5.8/scheduling#task-hooks)所以我可以做这样的事情:

$schedule->command('mycommand')
->daily()
->after(function () {
// How can I access the command's name and output from here?
});

我试过使用 $this->output$this 指向 App\Console\Kernel 并且它说 未定义的属性:App\Console\Kernel::$output。我也尝试过将参数传递给闭包,但我想我需要指定一个类型,但我不知道,文档也不是很清楚。

有人知道如何做到这一点吗?

提前致谢!

最佳答案

假设你的命令中有这个

$this->info('hello');

在您的内核中,您可以将输出发送到一个临时文件,然后读取该文件并发送

/** @var \Illuminate\Console\Scheduling\Event $command */
$command = $schedule->command('mycommand')
->daily()
->sendOutputTo('storage/app/logs.txt');

$command->after(function () use ($command) {
\Log::debug([$command->command, $command->output]);
\Log::debug(file_get_contents($command->output));
});

你会得到

[2019-10-11 13:03:38] local.DEBUG: array (
0 => '\'/usr/bin/php7.3\' \'artisan\' command:name',
1 => 'storage/app/logs.txt',
)
[2019-10-11 13:03:38] local.DEBUG: hello

也许是时候重新开启这个提案了 https://github.com/laravel/ideas/issues/122#issuecomment-228215251

关于Laravel:在计划任务完成后发送松弛通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58339875/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com