Ric*_*hon 0 php scheduler supervisord laravel
我正在尝试将 Supervisord 与 Laravel 调度程序一起使用。它可以工作,但运行了多次,我不知道是否有任何配置错误。但我期望的是每个调度程序只有一次。如果我对这种情况有任何经验,请帮助我。
Run Code Online (Sandbox Code Playgroud)[program:laravel-scheduler] client_loop: send disconnect: Broken pipeum)02d command=php /var/www/project-api/artisan schedule:run --verbose --no-interaction [Process completed]autostart=true autorestart=true numprocs=1 user=nginx redirect_stderr=true stdout_logfile=/var/www/project-api/storage/logs/schedule.log stdout_logfile_maxbytes=10MB logfile_backups=10
Run Code Online (Sandbox Code Playgroud)protected function schedule(Schedule $schedule) { $schedule->command('telescope:prune --hours=24')->daily(); $schedule->command('horizon:snapshot')->everyFiveMinutes(); $schedule->job(new HourlyJob(), QueueName::HOURLY_JOB)->hourly(); $schedule->job(new MinuteJob(), QueueName::MINUTE_JOB)->everyTwoMinutes(); }
调度程序每两分钟正确运行一次,但问题是运行多个调度命令。请帮我解决这个问题。谢谢
对于日程安排,你应该使用 cronjob,你可以使用crontab
但如果你坚持使用supervisor跟随我:
您应该使用php artisan schedule:worknot php artisan schedule:run,因为 run 命令只会运行它一次。
我的主管的日程安排运行良好,所以我想在这里分享:
[program:laravel-worker-nordicstandard-schedule]
process_name=%(program_name)s_%(process_num)02d
directory=/home/nordicstandard.net/
command=php artisan schedule:work
autostart=true
autorestart=true
user=root
numprocs=1
redirect_stderr=true
stdout_logfile= /home/nordicstandard.net/storage/logs/worker1.log
Run Code Online (Sandbox Code Playgroud)
请记住使用directory=/home/nordicstandard.net/您的项目文件夹。
就是这样。它正在工作...
在sudo supervisorctl->中status你可以看到如下输出:
laravel-worker-nordicstandard-schedule:laravel-worker-nordicstandard-schedule_00 RUNNING pid 4084, uptime 0:06:55
Run Code Online (Sandbox Code Playgroud)
最后一行与 相关,schedule其他行与 相关queue。
注意:您应该小心,numprocs=1并且不应超过一个。
note2:
php artisan schedule:listen类似于php artisan schedule:work但php artisan schedule:listen有利于开发,因为它正在监听代码中的最新更改。但php artisan schedule:work不会考虑您的更改并使用缓存。
| 归档时间: |
|
| 查看次数: |
7595 次 |
| 最近记录: |