meloflavio / cron-bundle
此包提供了执行 Symfony 命令的计划任务功能
Requires
- php: ~7.1
- doctrine/annotations: ^1.8
- doctrine/collections: ^1.6
- doctrine/common: ^2.8
- doctrine/event-manager: ^1.1
- doctrine/orm: ^2.6
- doctrine/persistence: ^1.2
- dragonmantank/cron-expression: ^1.1
- symfony/config: ^4.4|^5.0
- symfony/console: ^4.4|^5.0
- symfony/dependency-injection: ^4.4|^5.0
- symfony/event-dispatcher: ^4.4|^5.0
- symfony/event-dispatcher-contracts: ^1.1|^2.0
- symfony/framework-bundle: ^4.4|^5.0
- symfony/http-foundation: ^4.4|^5.0
- symfony/http-kernel: ^4.4|^5.0
- symfony/process: ^4.4|^5.0
- symfony/stopwatch: ^4.4|^5.0
Requires (Dev)
- dg/bypass-finals: ~1.1
- doctrine/coding-standard: ~7.0
- maglnet/composer-require-checker: ~2.0
- phpstan/phpstan: ~0.12
- phpstan/phpstan-deprecation-rules: ~0.12
- phpstan/phpstan-phpunit: ~0.12
- phpstan/phpstan-strict-rules: ~0.12
- phpunit/phpunit: ~9.0
- roave/security-advisories: dev-master
- squizlabs/php_codesniffer: ~3.4
- symfony/var-dumper: ~5.0
Suggests
- shapecode/cron-sonata-admin-bundle: to manage cronjobs in the sonata admin panel
This package is auto-updated.
Last update: 2024-09-28 01:06:34 UTC
README
此包提供了一个简单的接口,用于在您的应用程序中注册重复的计划任务。
安装说明
安装此包可以通过以下简单步骤完成
通过 composer 将包添加到您的项目中
composer require shapecode/cron-bundle
如果 flex 没有为您完成,请将包添加到您的配置中
<?php // config/bundles.php return [ // ... Shapecode\Bundle\CronBundle\ShapecodeCronBundle::class, // ... ];
更新您的数据库模式 ...
... 使用 Doctrine 模式更新方法 ...
php bin/console doctrine:schema:update --force
创建自己的任务
使用 CronBundle 创建自己的任务非常简单 - 您只需创建一个常规的 Symfony2 命令(或 ContainerAwareCommand),并使用 CronJob 注解标记,如下所示
<?php declare(strict_types=1); namespace App\DemoBundle\Command; use Shapecode\Bundle\CronBundle\Annotation\CronJob; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; /** * @CronJob("*\/5 * * * *") * Will be executed every 5 minutes */ class DemoCommand extends Command { public function configure() : void { // Must have a name configured // ... } public function execute(InputInterface $input, OutputInterface $output) : void { // Your code here } }
间隔指定(如上例中的 "*/5 * * * *")使用标准 cronjob 调度格式,可以根据需要修改。在这个例子中,您必须转义 /,因为它会关闭注解。您还可以通过多次使用注解并指定不同的值来注册您的命令多次。为了使您的 CronJob 被扫描并包含在未来的运行中,您必须首先运行 php bin/console shapecode:cron:scan
- 它将在您下次运行 php app/console shapecode:cron:run
时计划运行。
注册您的新 Cron
$ php bin/console shapecode:cron:scan $ php bin/console shapecode:cron:run
自动运行 cron 任务
此包的设计理念是您的任务将以最小的间隔运行 - 任务将不会比您安排的更频繁地运行,但只能在您触发时(通过运行 bin/console shapecode:cron:run
)运行。
为了便于操作,您可以在系统上创建一个 cron 作业,如下所示
*/5 * * * * php /path/to/symfony/bin/console shapecode:cron:run
这将安排您的任务最多每 5 分钟运行一次 - 例如,计划每 3 分钟运行的任务将仅在每 5 分钟运行。
从命令行禁用和启用单个 cron 作业
此包允许您轻松地从命令行禁用和启用单个计划 CronJobs。
要 禁用 CronJob,请运行:bin/console shapecode:cron:edit your:cron:job --enable n
,其中 your:cron:job
是您项目中要禁用的 CronJob 的名称。
运行上述命令将禁用您的 CronJob,直到您手动再次启用它。请注意,尽管 cron_job
表上的 next_run
字段仍然保留 datetime 值,但您的禁用 cronjob 将不会运行。
要 启用 cron 作业,请运行:bin/console shapecode:cron:edit your:cron:job --enable y
,其中 your:cron:job
是您项目中要启用的 CronJob 的名称。
配置
清理
默认情况下,您的日志将在 7 天后清除,以避免数据库中的条目过多。
您可以通过设置配置来更改此设置。
shapecode_cron: results: auto_prune: true # default interval: 7 days ago # default. A date time interval specification