valorin/cronsync

此包已被废弃且不再维护。没有建议的替代包。

CronSync是一种在代码(因此也在版本控制中)内定义 artisan 命令 crontab 调度的方式,通过将更新 crontab 作为部署过程的一部分来实现。

v1.0.3 2014-08-16 23:24 UTC

This package is auto-updated.

Last update: 2019-09-08 09:39:55 UTC


README

Dispatcher启发,CronSync是在部署过程中通过更新 crontab 的方式,在代码内(因此也在版本控制中)定义 artisan 命令 crontab 调度的方法,无需每分钟运行一个单独的进程来检查任何 crontab 任务。

在推送新代码后运行 php artisan cronsync 将确保当前用户的 crontab 自动配置以匹配 crontab 定义。

安装

使用 composer 将包添加到您的应用程序

composer require "valorin/cronsync:~1.0"

将服务提供者添加到 ./app/config/app.php 中的 providers 列表

'providers' => array(
    ...
    'Valorin\CronSync\ServiceProvider',
),

使用方法

要在 artisan 命令中定义 crontab 调度,首先将 CronCommandInterface 添加到命令中

use Valorin\CronSync\CronCommandInterface;
...
class ClassName extends Command implements CronCommandInterface

然后在类中实现 schedule() 命令以返回 crontab 调度表达式

/**
 * Returns the cron schedule to use
 *
 * @return string|string[]
 */
public function schedule()
{
    // Every hour at 42 minutes past the hour
    return '42 * * * *';
}

要支持 artisan 命令的参数,返回一个数组

    return ['*/5 * * * *', '--option --option2="value" argument1'];

然后运行 dry-run 命令以检查 crontab 是否正确配置

php artisan cronsync --dry-run

如果一切看起来都很好,您可以从末尾去掉 --dry-run

php artisan cronsync

重要:如果您的 crontab 条目不与 artisan 命令相关联但包含 base_path(),则 CronSync 会删除它们。您可以通过 artisan 命令实现它们,或者将它们添加到 custom_commands 配置选项中。

配置

要更改默认配置,运行

./artisan config:publish "valorin/cronsync"

然后编辑配置文件

./app/config/packages/valorin/cronsync/config.php