Subversion-Projekte lars-tiefland.laravel_shop

Revision

Details | Letzte Änderung | Log anzeigen | RSS feed

Revision Autor Zeilennr. Zeile
148 lars 1
PHP Cron Expression Parser
2
==========================
3
 
4
[![Latest Stable Version](https://poser.pugx.org/dragonmantank/cron-expression/v/stable.png)](https://packagist.org/packages/dragonmantank/cron-expression) [![Total Downloads](https://poser.pugx.org/dragonmantank/cron-expression/downloads.png)](https://packagist.org/packages/dragonmantank/cron-expression) [![Build Status](https://secure.travis-ci.org/dragonmantank/cron-expression.png)](http://travis-ci.org/dragonmantank/cron-expression) [![StyleCI](https://github.styleci.io/repos/103715337/shield?branch=master)](https://github.styleci.io/repos/103715337)
5
 
6
The PHP cron expression parser can parse a CRON expression, determine if it is
7
due to run, calculate the next run date of the expression, and calculate the previous
8
run date of the expression.  You can calculate dates far into the future or past by
9
skipping **n** number of matching dates.
10
 
11
The parser can handle increments of ranges (e.g. */12, 2-59/3), intervals (e.g. 0-9),
12
lists (e.g. 1,2,3), **W** to find the nearest weekday for a given day of the month, **L** to
13
find the last day of the month, **L** to find the last given weekday of a month, and hash
14
(#) to find the nth weekday of a given month.
15
 
16
More information about this fork can be found in the blog post [here](http://ctankersley.com/2017/10/12/cron-expression-update/). tl;dr - v2.0.0 is a major breaking change, and @dragonmantank can better take care of the project in a separate fork.
17
 
18
Installing
19
==========
20
 
21
Add the dependency to your project:
22
 
23
```bash
24
composer require dragonmantank/cron-expression
25
```
26
 
27
Usage
28
=====
29
```php
30
<?php
31
 
32
require_once '/vendor/autoload.php';
33
 
34
// Works with predefined scheduling definitions
35
$cron = new Cron\CronExpression('@daily');
36
$cron->isDue();
37
echo $cron->getNextRunDate()->format('Y-m-d H:i:s');
38
echo $cron->getPreviousRunDate()->format('Y-m-d H:i:s');
39
 
40
// Works with complex expressions
41
$cron = new Cron\CronExpression('3-59/15 6-12 */15 1 2-5');
42
echo $cron->getNextRunDate()->format('Y-m-d H:i:s');
43
 
44
// Calculate a run date two iterations into the future
45
$cron = new Cron\CronExpression('@daily');
46
echo $cron->getNextRunDate(null, 2)->format('Y-m-d H:i:s');
47
 
48
// Calculate a run date relative to a specific time
49
$cron = new Cron\CronExpression('@monthly');
50
echo $cron->getNextRunDate('2010-01-12 00:00:00')->format('Y-m-d H:i:s');
51
```
52
 
53
CRON Expressions
54
================
55
 
56
A CRON expression is a string representing the schedule for a particular command to execute.  The parts of a CRON schedule are as follows:
57
 
58
    *    *    *    *    *
59
    -    -    -    -    -
60
    |    |    |    |    |
61
    |    |    |    |    |
62
    |    |    |    |    +----- day of week (0 - 7) (Sunday=0 or 7)
63
    |    |    |    +---------- month (1 - 12)
64
    |    |    +--------------- day of month (1 - 31)
65
    |    +-------------------- hour (0 - 23)
66
    +------------------------- min (0 - 59)
67
 
68
This library also supports a few macros:
69
 
70
* `@yearly`, `@annually` - Run once a year, midnight, Jan. 1 - `0 0 1 1 *`
71
* `@monthly` - Run once a month, midnight, first of month - `0 0 1 * *`
72
* `@weekly` - Run once a week, midnight on Sun - `0 0 * * 0`
73
* `@daily`, `@midnight` - Run once a day, midnight - `0 0 * * *`
74
* `@hourly` - Run once an hour, first minute - `0 * * * *`
75
 
76
Requirements
77
============
78
 
79
- PHP 7.2+
80
- PHPUnit is required to run the unit tests
81
- Composer is required to run the unit tests
82
 
83
Projects that Use cron-expression
84
=================================
85
* Part of the [Laravel Framework](https://github.com/laravel/framework/)
86
* Available as a [Symfony Bundle - setono/cron-expression-bundle](https://github.com/Setono/CronExpressionBundle)
87
* Framework agnostic, PHP-based job scheduler - [Crunz](https://github.com/lavary/crunz)