Laravel Octane sail 运行之后,任务调度是怎么执行的
1. 运行环境
sail
1). 当前使用的 Laravel 版本?
laravel8.x
2). 当前使用的 php/php-fpm 版本?
PHP 版本:8.0
php-fpm 版本:8.0
3). 当前系统
sail
docker
4). 业务环境
sail
docker
5). 相关软件版本
2. 问题描述?
这个任务调度(php artisan schedule:run)是启动框架,任务就会自动运行吗?
任务后台运行 runInBackground() 是多进程运行吗?
当您在使用 Octane + Sail 运行 Laravel 应用程序时,任务调度器仍然可以正常工作。当您在 Octane 中运行 Laravel 应用程序时,任务调度器不再使用系统 Cron 作业来触发运行,而是使用 Octane 内置的定时器来触发运行。Octane 定时器是一个基于 ReactPHP 的定时器,它可以在 Laravel 应用程序中以非阻塞的方式运行任务调度器。这意味着,任务调度器可以在不阻塞应用程序的情况下运行,不会影响应用程序的性能和并发能力。
要在 Octane 中启用任务调度器,您需要在 Laravel 应用程序的
app/Console/Kernel.php
文件中注册定时任务,并在 Octane 配置文件中启用定时器。具体步骤如下:app/Console/Kernel.php
文件中注册定时任务。您可以使用->everyMinute()
、->daily()
等方法来指定任务的执行频率和时间条件。例如,以下代码将注册一个每分钟执行一次的任务:启用定时器后,您可以在 Octane 中使用
php artisan octane:start
命令来启动 Laravel 应用程序,并在控制台中查看任务调度器的输出。当定时任务触发时,Octane 定时器将自动调用任务调度器并执行相应的任务。需要注意的是,任务调度器将在单个进程中运行,并使用共享内存来存储计划任务列表和任务状态,因此需要注意避免多个进程同时修改任务状态的情况。