course-hero/symfony-cron-bundle

Symfony2 的 Cron 相关实用工具

v0.2.0 2014-11-04 13:32 UTC

This package is not auto-updated.

Last update: 2024-09-24 03:25:09 UTC


README

什么是 symfony-cron?

symfony-cron 是一个为 Symfony2 提供与 cron 环境中运行的计划任务相关功能的工具包。

Build Status Coverage Status

要求

symfony-cron 支持 PHP 5.4+Symfony 2.5+

安装

安装 symfony-cron 的最佳方式是使用如 composer 之类的机制包含该包。有关包的信息已发布到 packagist

使用

要在基于 Symfony2 的项目中使用 symfony-cron,首先定义您希望如何使用系统。以下清单可能会有所帮助

  • 将使用哪种类型的锁服务?(文件、memcached 等)
  • 命令需要在子进程中执行吗?
    • 如果不在子进程中执行,意外终止的进程将导致锁未被释放,从而防止未来的进程运行。

示例:使用子进程的文件锁

app/config/config.yml

services:
    symfony_cron.lock_file_service:
        class: SymfonyCronBundle\Component\Lock\LockFileService
    symfony_cron.default_lock_service: "@symfony_cron.lock_file_service"
    symfony_cron.process_service:
        class: SymfonyCronBundle\Component\Process\ProcessService

crontab

* * * * * /path/to/script

/path/to/script

#!/bin/bash

/usr/bin/php \
    /path/to/symfony/app/console \
    cron:single_exec \
        --id /path/to/lock/files/some-unique-file \
        --child_process \
    -- \
        /path/to/child/script \
        --script-option \
        script-args

示例:作为嵌入应用的同一脚本的多个实例

app/config/config.yml

services:
    symfony_cron.lock_file_service:
        class: SymfonyCronBundle\Component\Lock\LockFileService
    symfony_cron.default_lock_service: "@symfony_cron.lock_file_service"
    symfony_cron.process_service:
        class: SymfonyCronBundle\Component\Process\ProcessService

crontab

* * * * * /path/to/script instance-1-unique-key parameter-set-1
* * * * * /path/to/script instance-2-unique-key parameter-set-2

/path/to/script

#!/bin/bash

KEY="$1"
PARAM="$2"

/usr/bin/php \
    /path/to/symfony/app/console \
    cron:single_exec \
        --id ${KEY} \
    -- \
        some:command \
        ${PARAM}

贡献

symfony-cron 是一个开源、社区驱动的项目。如果您想贡献,请阅读 贡献 文档。如果您正在提交拉取请求,请遵循 提交补丁 部分的指南,并使用 Pull Request 模板

运行测试

所有测试都支持使用标准的 phpunit 实践。还提供了一个 辅助脚本,以帮助运行测试。