定时任务

该软件包的官方仓库似乎已不存在,因此软件包已被冻结。

维护者

详细信息

github.com/astartsky/Cron

源代码

安装: 768

依赖: 1

建议: 0

安全: 0

星标: 0

关注者: 1

分支: 55

1.0.6.3 2016-03-27 11:55 UTC

README

Packagist Build Status Quality Coverage SensioLabs Insight Packagist License

这个库允许您只有一个通用的crontab条目,该条目将触发几个不同的定时任务,这些任务可以通过这个库定义。Cron库将决定任务是否需要运行。

注意:请确保您将服务器crontab任务设置为正确选择的频率,因为如果代码中定义了一个每分钟运行的定时任务,您的通用crontab任务也需要至少每分钟运行一次才能正常工作。

使用案例

假设您的应用程序需要两个定时任务。一个将文件夹内容写入日志文件,另一个将清空文件夹。这个库允许您创建单独的脚本(例如:cron.php),在其中通知Cron库这两个定时任务。在定义了任务的详细信息后,可以将它们添加到解析器,并给出运行命令。

您服务器的crontab可能看起来像这样

* * * * * /path/to/php /path/to/cron.php >/dev/null 2>&1

以下代码示例与该使用案例相匹配。

代码示例

<?php

require_once(__DIR__ . '/vendor/autoload.php');

// Write folder content to log every five minutes.
$job1 = new \Cron\Job\ShellJob();
$job1->setCommand('ls -la /path/to/folder');
$job1->setSchedule(new \Cron\Schedule\CrontabSchedule('*/5 * * * *'));

// Remove folder contents every hour.
$job2 = new \Cron\Job\ShellJob();
$job2->setCommand('rm -rf /path/to/folder/*');
$job2->setSchedule(new \Cron\Schedule\CrontabSchedule('0 0 * * *'));

$resolver = new \Cron\Resolver\ArrayResolver();
$resolver->addJob($job1);
$resolver->addJob($job2);

$cron = new \Cron\Cron();
$cron->setExecutor(new \Cron\Executor\Executor());
$cron->setResolver($resolver);

$cron->run();

Cron目前只支持触发shell命令。这意味着您可以触发任何东西,尽管强烈建议不要调用web网址。但如果您确实需要,这里有一些示例命令。

* * * * * /usr/bin/lynx -source http://example.com/cron.php
* * * * * /usr/bin/wget -O - -q -t 1 http://www.example.com/cron.php
* * * * * curl -s http://example.com/cron.php

安装

将以下内容添加到您的项目的composer.json中

{
    "require": {
        "cron/cron": "1.0.*@dev"
    }
}

Crontab语法

CRON表达式是一个字符串,表示特定命令执行的调度。CRON调度的各个部分如下

*    *    *    *    *    *
-    -    -    -    -    -
|    |    |    |    |    |
|    |    |    |    |    + year [optional]
|    |    |    |    +----- day of week (0 - 7) (Sunday=0 or 7)
|    |    |    +---------- month (1 - 12)
|    |    +--------------- day of month (1 - 31)
|    +-------------------- hour (0 - 23)
+------------------------- min (0 - 59)

每个部分都支持通配符(*)、范围(2-5)和列表(2,5,6,11)。

贡献

所有代码贡献(包括具有提交访问权限的人的贡献)都必须通过pull请求进行,并经核心开发者批准后才能合并。这是为了确保对所有代码的适当审查。

分支项目,创建功能分支,并发送pull请求给我们。

为了确保一致的代码库,您应该确保代码遵循我们从Symfony借用的编码标准。请检查php-cs-fixer,这将非常有帮助。

如果您想帮忙,请查看问题列表

要求

PHP 5.3.2 或更高版本

作者和贡献者

Dries De Peuter - dries@nousefreak.be - http://nousefreak.be

请参阅参与此项目的贡献者列表

授权

Cron遵循MIT授权协议。