gpt4 book ai didi

php - Laravel 调度程序 : execute a command every second

转载 作者:可可西里 更新时间:2023-11-01 00:57:06 25 4
gpt4 key购买 nike

我有一个项目需要通过 WebSockets 持续发送通知。它应该连接到一个以字符串格式返回整体状态的设备。系统对其进行处理,然后根据各种条件发送通知。

由于调度程序最早可以在一分钟内重复执行任务,因此我需要找到一种每秒执行该函数的方法。

这是我的app/Console/Kernel.php:

<?php    
...
class Kernel extends ConsoleKernel
{
...
protected function schedule(Schedule $schedule)
{
$schedule->call(function(){
// connect to the device and process its response
})->everyMinute();
}
}

PS:如果您有更好的想法来处理这种情况,请分享您的想法。

最佳答案

通常,当您想要超过 1 分钟的粒度时,您必须编写一个守护进程。

我建议你试试,现在不像几年前那么难了。只需从 CLI 命令中的一个简单循环开始:

while (true) {
doPeriodicStuff();

sleep(1);
}

一件重要的事情:通过 supervisord 运行守护进程.您可以查看有关 Laravel 的队列监听器设置的文章,它使用相同的方法(守护进程 + supervisord)。配置部分可能如下所示:

[program:your_daemon]
command=php artisan your:command --env=your_environment
directory=/path/to/laravel
stdout_logfile=/path/to/laravel/app/storage/logs/your_command.log
redirect_stderr=true
autostart=true
autorestart=true

关于php - Laravel 调度程序 : execute a command every second,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38586498/

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