shapecode / cron-bundle
此包提供对 Symfony 命令的定时执行
Requires
- php: ^8.2
- doctrine/collections: ^2.1
- doctrine/dbal: ^3.7 || ^4.0
- doctrine/doctrine-bundle: ^2.11
- doctrine/event-manager: ^2.0
- doctrine/orm: ^2.17 || ^3.0
- doctrine/persistence: ^3.2
- dragonmantank/cron-expression: ^3.3
- psr/clock: ^1.0
- ramsey/collection: ^2.0
- symfony/config: ^6.4 || ^7.0
- symfony/console: ^6.4 || ^7.0
- symfony/dependency-injection: ^6.4 || ^7.0
- symfony/event-dispatcher: ^6.4 || ^7.0
- symfony/event-dispatcher-contracts: ^3.4
- symfony/framework-bundle: ^6.4 || ^7.0
- symfony/http-foundation: ^6.4 || ^7.0
- symfony/http-kernel: ^6.4 || ^7.0
- symfony/process: ^6.4 || ^7.0
- symfony/stopwatch: ^6.4 || ^7.0
Requires (Dev)
- doctrine/coding-standard: ^12.0
- icanhazstring/composer-unused: ^0.8
- maglnet/composer-require-checker: ^4.7
- phpstan/phpstan: ^1.10
- phpstan/phpstan-deprecation-rules: ^1.1
- phpstan/phpstan-doctrine: ^1.3
- phpstan/phpstan-phpunit: ^1.3
- phpstan/phpstan-strict-rules: ^1.5
- phpstan/phpstan-symfony: ^1.3
- phpunit/phpunit: ^10.5
- roave/security-advisories: dev-master
- squizlabs/php_codesniffer: ^3.7
- symfony/clock: ^7.0
- symfony/var-dumper: ^7.0
- dev-master / 7.0.x-dev
- 7.0.0
- 6.1.0
- 6.0.0
- 5.0.1
- 5.0.0
- 4.0.5
- 4.0.4
- 4.0.3
- 4.0.2
- 4.0.1
- 4.0.0
- 3.2.3
- 3.2.2
- 3.2.1
- 3.2.0
- 3.1.2
- 3.1.1
- 3.1.0
- 3.0.6
- 3.0.5
- 3.0.4
- 3.0.3
- 3.0.2
- 3.0.1
- 3.0.0
- 2.1.0
- 2.0.0
- 2.0.0-beta2
- 2.0.0-beta1
- 1.3.4
- 1.3.3
- 1.3.2
- 1.3.1
- 1.3.0
- 1.2.0
- 1.1.0
- 1.0.3
- 1.0.2
- 1.0.1
- 1.0.0
- dev-release/5.0
- dev-release/4.0
This package is auto-updated.
Last update: 2024-09-07 07:47:35 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\Attribute\AsCronJob; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; #[AsCronJob('*/5 * * * *')] 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 作业
此包允许您轻松地从命令行禁用和启用单个计划好的 CronJob。
要 禁用 CronJob,请运行: bin/console shapecode:cron:disable your:cron:job
,其中 your:cron:job
是您想禁用的项目中 CronJob 的名称。
运行上述命令将禁用您的 CronJob,直到您手动再次启用它。请注意,尽管 cron_job
表上的 next_run
字段仍然包含 datetime 值,但您的禁用 cronjob 不会运行。
要 启用 cron 作业,请运行: bin/console shapecode:cron:enable your:cron:job
,其中 your:cron:job
是您想启用的项目中 CronJob 的名称。
配置
默认情况下,所有cron作业都会运行直到完成(或超过由进程组件设置的默认超时时间60秒。当从控制器中运行cron作业时,设置cron作业的超时时间可能很有用,因为HTTP请求可能会因为PHP的最大执行限制而被杀死。通过指定超时,所有作业都会自动被终止,并且会持久化正确的作业结果(这将不会指示任何成功),请参阅#26。默认值为null
,让进程组件使用其默认超时,否则应用指定的超时时间(以float
形式表示,单位为秒),请参阅进程组件文档。重要:超时适用于每个cron作业,无论它是从控制器还是CLI执行。
shapecode_cron: timeout: null # default. A number (of type float) can be specified