croon/croon

PHP版本的Crontab

0.2.1 2014-08-03 16:09 UTC

This package is not auto-updated.

Last update: 2024-09-23 11:15:58 UTC


README

Croon是一个PHP版本的CronTab实现

之前也做过一个类似的实现php-crontab,Croon与之不同的是:使用进程管理方式Fork工作进程;有友好的日志模块;加入事件驱动;更规范和稳定

功能:

  • 兼容CronTab语法
  • 精确到秒级控制
  • PSR标准
  • 支持事件绑定
  • 支持日志

依赖

  • PHP 5.3.9+
  • ext-pcntl
  • ext-posix
  • Composer

库依赖(使用composer install自动安装)

安装

下载使用:

最新版本

Git

git clone git://github.com/hfcorriez/croon.git
cd croon
composer install

Composer

composer require croon/croon

使用

基本用法

croon.list

* * * * * * ls -l >> /tmp/ls.log

# 兼容系统crontab
* * * * * pwd >> /tmp/pwd.log

执行

./bin/croon croon.list -l croon.log

croon.log

[2013-04-20 14:07:01] 27a6c9 -  debug   - Croon...!!!
[2013-04-20 14:07:01] 27a6c9 -   info   - Execute (ls >> /tmp/ls.log)
[2013-04-20 14:07:01] 27a6c9 -   info   - Finish (ls >> /tmp/ls.log)[0]

以mysql数据库为计划任务源

  • 修改数据库连接信息 bin/croon_with_mysql
  • 表结构为

+---------------------+--------------------------------------------------------+
| time                | command                                                |
+---------------------+--------------------------------------------------------+
| [秒] 分 时 日 月 周   | command                                                |
+---------------------+--------------------------------------------------------+

执行

./bin/croon_with_mysql -l croon.log

高级用法

bootstrap.php

<?php

// 绑定启动事件
$croon->on('run', function() use($croon) {
    // 注入db
    $croon->db = new \PDO('mysql://localhost:3306;dbname=reports');
});

// 绑定执行事件
$croon->on('executed', function ($command, $output) use ($croon) {
    // 记录执行结果
    $croon->db->exec(sprintf(
        'INSERT INTO cron(command, status, stdout, stderr, create_time) VALUES ("%s", "%s", "%s", "%s", "%s")',
        $command, $output[0], $output[1], $output[2], date('Y-m-d H:i:s'))
    );
});

执行

./bin/croon croon.list -l croon.log -b bootstrap.php

许可证

(MIT许可证)

版权所有 (c) 2012 hfcorriez <hfcorriez@gmail.com>

特此授予任何获得本软件及其相关文档副本(以下简称“软件”)的人免费使用本软件的权利,不受任何限制,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件副本,并允许向获得软件的人提供本软件以供其使用,前提是遵守以下条件

上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。

本软件按“原样”提供,不提供任何明示或暗示的保证,包括但不限于对适销性、特定用途的适用性和非侵权的保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任负责,无论这些责任是因合同、侵权或其他原因而产生的,也不论这些责任是否源于、因之或与此软件或其使用或其它交易有关。