Laravel 5.1 Windows 上的任务安排
Laravel 5.1 Task Scheduling on Windows
我正在尝试让 Laravel 5.1 任务计划在 IIS 上运行。当我使用 Windows 任务管理器 运行 一个批处理文件时,它只会 运行 任务一次。我怎样才能让 ->everyMinute() 工作?
Windows批处理文件:
cd c:\inetpub\myapp
c:\PROGRA~2\PHP\php.exe artisan schedule:run 1>> NUL 2>&1
内核:
class Kernel extends ConsoleKernel
{
protected $commands = [
\App\Console\Commands\MyCommand::class,
];
protected function schedule(Schedule $schedule)
{
$schedule->command('test')->everyMinute();
}
}
命令:
public function handle()
{
log::info('test');
}
看看 task scheduler 文档。
Starting The Scheduler
Here is the only Cron entry you need to add to your server:
* * * * * php /path/to/artisan schedule:run >> /dev/null 2>&1
This Cron will call the Laravel command scheduler every minute. Then, Laravel evaluates your scheduled tasks and runs the tasks that are due.
在您的情况下,您使用 Windows 任务调度程序而不是 Cron,但重要的是每分钟调用 artisan schedule:run
。每次此命令 运行 时,它都会检查其计划并 运行 添加到期的 tasks/commands。
artisan schedule:run
不会启动一个长 运行ning 进程,该进程在您杀死它之前一直保持 运行s 任务。正如我所说,它需要每分钟调用一次。
您需要创建一个计划任务,每分钟执行一次该批处理文件。
这样做:
按 Win + R 和 运行 taskschd.msc
在右侧面板中单击 创建基本任务 并为其命名 + 描述。
单击“下一步”和“select启动程序选项,然后导航到批处理文件并select它。无需填写其他字段。
Select "Open the properties of this task..." 然后完成。
在触发选项卡上,您可以在每天或登录时[=]之间切换56=](就像我一样)。
这是没有记录的部分,打开保管箱并使用键盘插入 1,这是将重复时间设置为 1 分钟的唯一方法(即使下拉列表没有列出它)。
Larevel
每分钟需要 cronjob
到 运行,否则将无法正常工作。
同时检查 "Indefinitely" 到 运行 终生。
希望对您有所帮助。
Windows任务计划程序帮助是here,如果你运行陷入困境。
Windows 确实支持 Laravel Scheduler 但是,您必须自己多次 运行 命令。由于我们不能像使用 linux crontab 那样每 1 分钟使用 Windows Task Scheduler 到 运行。如果您在开发环境中使用 windows 并想测试命令是否正常工作,您可以试试这个
如果你 运行
php artisan schedule:run
通过为每次试验提供最小间隙来多次执行命令。
如果你想运行直接执行命令,你可以按照这个。
"path\to\php.exe" "artisan" YourCommand > "NUL" 2>&1 &
您可以使用以下步骤找到 php.exe 的路径。
Run "where php.exe" in command prompt
我有一个解决方案
创建文件可执行文件 xxx.cmd,打开文件并写入下一个文本。
@echo off
echo - = = = Schedule Run Jobs == = = = -
CD d: && CD \xampp\htdocs\folderlaravel && php artisan schedule:run
timeout 86400
CD d: && CD \xampp\htdocs\folderlaravel && "Schedule.cmd"
pause
@cls
您所做的是 运行 和 运行 本身处于无限循环中,具体取决于给定的超时时间。在这种情况下 86400 => 1 天。
它有点模棱两可,但它有效:)
希望对你有用。
我正在尝试让 Laravel 5.1 任务计划在 IIS 上运行。当我使用 Windows 任务管理器 运行 一个批处理文件时,它只会 运行 任务一次。我怎样才能让 ->everyMinute() 工作?
Windows批处理文件:
cd c:\inetpub\myapp
c:\PROGRA~2\PHP\php.exe artisan schedule:run 1>> NUL 2>&1
内核:
class Kernel extends ConsoleKernel
{
protected $commands = [
\App\Console\Commands\MyCommand::class,
];
protected function schedule(Schedule $schedule)
{
$schedule->command('test')->everyMinute();
}
}
命令:
public function handle()
{
log::info('test');
}
看看 task scheduler 文档。
Starting The Scheduler
Here is the only Cron entry you need to add to your server:
* * * * * php /path/to/artisan schedule:run >> /dev/null 2>&1
This Cron will call the Laravel command scheduler every minute. Then, Laravel evaluates your scheduled tasks and runs the tasks that are due.
在您的情况下,您使用 Windows 任务调度程序而不是 Cron,但重要的是每分钟调用 artisan schedule:run
。每次此命令 运行 时,它都会检查其计划并 运行 添加到期的 tasks/commands。
artisan schedule:run
不会启动一个长 运行ning 进程,该进程在您杀死它之前一直保持 运行s 任务。正如我所说,它需要每分钟调用一次。
您需要创建一个计划任务,每分钟执行一次该批处理文件。
这样做:
按 Win + R 和 运行
taskschd.msc
在右侧面板中单击 创建基本任务 并为其命名 + 描述。
单击“下一步”和“select启动程序选项,然后导航到批处理文件并select它。无需填写其他字段。
Select "Open the properties of this task..." 然后完成。
在触发选项卡上,您可以在每天或登录时[=]之间切换56=](就像我一样)。
这是没有记录的部分,打开保管箱并使用键盘插入 1,这是将重复时间设置为 1 分钟的唯一方法(即使下拉列表没有列出它)。
Larevel
每分钟需要cronjob
到 运行,否则将无法正常工作。同时检查 "Indefinitely" 到 运行 终生。
希望对您有所帮助。
Windows任务计划程序帮助是here,如果你运行陷入困境。
Windows 确实支持 Laravel Scheduler 但是,您必须自己多次 运行 命令。由于我们不能像使用 linux crontab 那样每 1 分钟使用 Windows Task Scheduler 到 运行。如果您在开发环境中使用 windows 并想测试命令是否正常工作,您可以试试这个
如果你 运行
php artisan schedule:run
通过为每次试验提供最小间隙来多次执行命令。
如果你想运行直接执行命令,你可以按照这个。
"path\to\php.exe" "artisan" YourCommand > "NUL" 2>&1 &
您可以使用以下步骤找到 php.exe 的路径。
Run "where php.exe" in command prompt
我有一个解决方案 创建文件可执行文件 xxx.cmd,打开文件并写入下一个文本。
@echo off
echo - = = = Schedule Run Jobs == = = = -
CD d: && CD \xampp\htdocs\folderlaravel && php artisan schedule:run
timeout 86400
CD d: && CD \xampp\htdocs\folderlaravel && "Schedule.cmd"
pause
@cls
您所做的是 运行 和 运行 本身处于无限循环中,具体取决于给定的超时时间。在这种情况下 86400 => 1 天。
它有点模棱两可,但它有效:)
希望对你有用。