我在Laravel中有一个应用程序。在其中,我使用Laradock来促进容器的创建。
使用的容器是:
[我在Laravel Scheduler中设置了一些插件,它们在早期就可以正常工作,但是,它们总是在第二天或第三天落下帷幕,因此我没有错误日志。
如何进行?我有一种感觉,redis服务刚刚停止工作。我总是必须重新启动php-worker和laravel-horizon并在午夜手动运行cron。
可能会发生什么?
-
我的horizon.conf(php工作者):
[program:horizon]
process_name=%(program_name)s_%(process_num)02d
command=php /var/www/artisan horizon
autostart=true
autorestart=true
numprocs=5
redirect_stderr=true
laravel-scheduler.conf
[program:laravel-scheduler]
process_name=%(program_name)s_%(process_num)02d
command=/bin/sh -c "while [ true ]; do (php /var/www/artisan schedule:run --verbose --no-interaction &); sleep 60; done"
autostart=true
autorestart=true
numprocs=5
user=laradock
redirect_stderr=true
Kernel.php
$schedule->command('cron:bonus_daily')->daily();
$schedule->command('cron:payout')->daily();
$schedule->command('cron:status')->everyFiveMinutes();
$schedule->command('cron:bonus_residual')->cron('0 0 */15 * *');
[Hi for cron(Task Scheduling
),laravel suggests仅运行正常的cron(从超级用户删除laravel-scheduler.conf
)并添加:]
* * * * * cd /var/www/artisan && php artisan schedule:run >> /dev/null 2>&1
运行:crontab -e
(用-u {your_user}
编辑特定用户的cron,通常是www-data
,然后在上面添加一行。
因为现在发生了什么:supervisor
启动scheduler
,它立即存在,并且主管将不再保持它的运行,这是您应用中断的地方,并且您不需要为Task Scheduling
生成5个进程,cron Task Scheduling
应该检查每分钟是否有任务(这是cron可以运行的最低任务)。
对于队列是supervisor
,在这里您可以产生更多的进程。