jupitern/scheduler

PHP事件调度

1.3.1 2016-12-16 12:08 UTC

This package is auto-updated.

Last update: 2024-09-26 05:56:51 UTC


README

Build Status Scrutinizer Code Quality Latest Stable Version Latest Unstable Version License

jupitern/scheduler

PHP调度器。

添加一次性事件日期或重复事件日期,从给定日期获取下一个事件日期或下一个X事件日期

要求

PHP 5.4或更高版本。

安装

将jupitern/scheduler包含到您的项目中,通过将其添加到您的composer.json文件中。

{
    "require": {
        "jupitern/scheduler": "1.*"
    }
}

用法

// instance Scheduler
$schedules = \Jupitern\Scheduler\Scheduler::instance()

// limit events from 08.00 am to 17.00
->setTimeFrame('08:00', '17:00')

// add a one time event date
// accepts any string compatible with php DateTime object
->add('2020-01-01 12:35')

// add another one time event date
// accepts any string compatible with php DateTime object
->add('2020-01-01 17:50')

// add a recurring date
// accepts any string compatible with php DateTime object
->addRecurring('+ 8 hours')

// get next schedule starting at 2020-01-01
->getNextSchedule('2020-01-01 00:00:00', 10);

// get next 5 schedules starting at 2020-01-01
->getNextSchedules('2020-01-01 00:00:00', 10);

// display schedules
foreach ($schedules as $schedule) {
    echo $schedule->format('Y-m-d H:i')."<br/>";
}

示例

$schedules = \Jupitern\Scheduler\Scheduler::instance()
    ->add('2030-01-01 12:35')
    ->add('2030-01-01 14:50')
    ->addRecurring('+2 hours')
    ->getNextSchedules('2030-01-01 00:00:00', 10);

foreach ($schedules as $schedule) {
    echo $schedule->format('Y-m-d H:i').'<br/>';
}

/*
output:
2030-01-01 00:00
2030-01-01 02:00
2030-01-01 04:00
2030-01-01 06:00
2030-01-01 08:00
2030-01-01 10:00
2030-01-01 12:00
2030-01-01 12:35
2030-01-01 14:00
2030-01-01 14:50
*/

$schedules = \Jupitern\Scheduler\Scheduler::instance()
    ->setTimeFrame('08:00', '17:00')
    ->add('2030-01-01 12:35')
    ->add('2030-01-01 14:50')
    ->addRecurring('+2 hours')
    ->getNextSchedules('2030-01-01 00:00:00', 10);

foreach ($schedules as $schedule) {
    echo $schedule->format('Y-m-d H:i').'<br/>';
}

/*
output:
2030-01-01 08:00
2030-01-01 10:00
2030-01-01 12:00
2030-01-01 12:35
2030-01-01 14:00
2030-01-01 14:50
2030-01-01 16:00
2030-01-02 08:00
2030-01-02 10:00
2030-01-02 12:00
*/


$schedules = \Jupitern\Scheduler\Scheduler::instance()
    ->setTimeFrame('08:30', '19:00')
    ->add('+10 minutes')
    ->add('+30 minutes')	// outside time frame. will not produce any schedule
    ->add('next day 08:30')
    ->getNextSchedules('2000-12-16 18:40');

foreach ($schedules as $schedule) {
    echo $schedule->format('Y-m-d H:i')."<br/>";
}

/*
output:
2000-12-16 18:50
2000-12-17 08:30
*/

变更日志

v1.3

  • 修改方法add,以允许相对一次性事件,如"+1小时"或"下一天17:00"。
  • 使用方法add添加的相对事件相对于$fromStartDate,并遵守如果设置的时间范围。

贡献

  • 欢迎讨论错误、功能和想法。

许可

jupitern/scheduler是在MIT许可下发布的。

您有权使用、修改和分发此软件