hmazter/laravel-schedule-list

Laravel 包,用于添加命令以列出所有计划好的 artisan 命令

v2.3.0 2022-02-11 13:49 UTC

README

Build Status StyleCI

Latest Stable Version Latest Unstable Version Total Downloads License

Laravel 5.6+ 包,用于添加 artisan 命令以列出所有计划好的 artisan 命令。包含计划时间(cron 表达式)、要执行的命令和命令描述。

安装

使用以下命令通过 composer 安装此包

composer require hmazter/laravel-schedule-list

注意! 对于 Laravel 版本 5.5 及以下,请使用 0.2.0 标签。

用法

从命令行显示所有计划好的 artisan 命令的用法

php artisan schedule:list

输出

 +--------------+---------------------+--------------+-------------------------------+
 | expression   | next run at         | command      | description                   |
 +--------------+---------------------+--------------+-------------------------------+
 | 0 14 * * 3 * | 2017-08-16 14:00:00 | email:export | Export users to email service |
 +--------------+---------------------+--------------+-------------------------------+

Crontab 样式输出

使用 --cron 以 crontab 文件中的相同样式显示输出。

输出

0 14 * * 3 * '/usr/local/bin/php' 'artisan' email:export > '/dev/null' 2>&1`

详细输出

使用 -vv 显示完整的命令,包括 php 二进制路径和输出路径。

输出

+--------------+---------------------+----------------------------------------------------------------+-------------------------------+
| expression   | next run at         | command                                                        | description                   |
+--------------+---------------------+----------------------------------------------------------------+-------------------------------+
| 0 14 * * 3 * | 2017-08-16 14:00:00 | '/usr/local/bin/php' 'artisan' email:export > '/dev/null' 2>&1 | Export users to email service |
+--------------+---------------------+----------------------------------------------------------------+-------------------------------+

使用 -vv--cron 不会改变正常 --cron 输出的样式。

程序性使用

对于需要以编程方式访问计划事件列表的情况,存在 \Hmazter\LaravelScheduleList\ScheduleList::all,它将返回所有计划事件作为 ScheduleEvent 的数组。

注入 ScheduleList 或从容器中解析它,然后调用 all() 以获取所有计划事件。可以在 ListScheduler::handle 中查看其用法。

定义 PHP 二进制路径

如果您使用自定义的 PHP 二进制路径,或者您在 Web 应用程序上下文中使用 \Hmazter\LaravelScheduleList\ScheduleList::all,而不是通过控制台,则可以发布包的配置文件并定义自己的二进制路径

php artisan vendor:publish --provider="Hmazter\LaravelScheduleList\ScheduleListServiceProvider" --tag="config"

例如 config/schedule-list.php

<?php

return [
    'remove_strings_from_command' => [
        "'".PHP_BINARY."'",
        "'artisan'",
    ],
];

已知限制

Laravel 随带一些特殊的调度函数,如 betweenunlessBetweenwhenskip,目前这些在调度列表输出中未得到正确处理。它们在每次执行计划时都会被评估,并不定义任何可以包含在表中的表达式。