gemorroj / cron-bundle
此包提供执行 Symfony 命令的计划任务
Requires
- php: ^7.2.5
- 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
- mtdowling/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
Replaces
- dev-master / 4.0.x-dev
- 4.0.0
- dev-develop / 3.3.x-dev
- 3.2.2
- 3.2.1
- 3.2.0
- 3.1.2
- 3.1.1
- 3.1.0
- dev-release/3.0 / 3.0.x-dev
- 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-remove-command
- dev-datepoint-immutable
- dev-doctrine-orm-3
- dev-php72-for-upstream
- dev-patch-1
- dev-release/3.2
- dev-feature/improvements
This package is auto-updated.
Last update: 2024-09-08 14:05:09 UTC
README
此包为在您的应用程序中注册重复计划任务提供了一个简单的接口。
安装说明
安装此包可以通过以下简单步骤完成
通过 composer 将此包添加到您的项目中
composer require gemorroj/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 分钟运行一次。
配置
清理
默认情况下,您的日志将在 7 天后清除,以避免数据库中有太多条目。
您可以通过设置配置来更改此设置。
shapecode_cron: results: auto_prune: true # default interval: 7 days ago # default. A date time interval specification