PHP Classes

File: readme

Recommend this page to a friend!
  Classes of giuseppe lucarelli  >  Schedule date  >  readme  >  Download  
File: readme
Role: Documentation
Content type: text/plain
Description: small documentation and samples
Class: Schedule date
Calculate the schedule of periodic events
Author: By
Last change: enabled accessibility without user login
Date: 12 years ago
Size: 3,723 bytes
 

Contents

Class file image Download
this class can be used to run/repeat a command or a script automatically at a specific time/date.
i've initially developed it for my mailinglist manager script to enable email scheduling/repeating, but you can use it
for others tasks/programs. i've chosen a different syntax from unix "cron" command because it was too hard for me to
explain how to set up a pattern to postpone/repeat an email.
The simplest way to set up a sample pattern for this class could be:
"2011 12 24 23:59"
this means 2011 as year, 12 as month, 24 as day and 23:59 as hour/minute
a more complex pattern could be:
"2011 6-9 2*mon-wed * 0"
this means 2011 as year, from june to september as month, only first two monday-tuesday-wednsday as day, every hour and
0 as minute.

how to use this class
---------------------

the pattern has this syntax:

yy mm dd hh mm 
or
yy/mm/dd hh:mm 
or
yy	mm	dd	hh	mm 

some valid patterns are, for an english week ('sun','mon','tue','wed','thu','fri','sat')

"2010 * 1*sun,tue 12 00"
"2009/1/15 11:57"
"2009  1-7     *       *       0"
"2009  *       *       *       0"
"2009-2010 1 mon,thu,fri 15 51"
"2009-2010/1/2*sun-tue,thu-sat 15:51"
"2009 2 3 0 51"
"2009-2010 01,03 3*sun,thu * 51"
"2009-2010 01,03 1*sun 0 51"
"2009-2010 01,03 * 11 51"
"2009-2010 3,12 1,4-7 15 51"
"2009-2010 01-02 10 0-23 51"
"2009-2010 01-02 10 11,23 51"
"2009 3,12 wed-fri 11 51"
"2009 * 1,4-7,9-12 11 51"

for an italian version of week ('dom','lun','mar','mer','gio','ven','sab')

"2009-2010 * 1*lun,mar 10 51"

Functions:

GetFirstRun(pattern,startTime)

for example:

<?php
require_once("class.scheduledate.php");

    $sd = new ScheduleDate;
    // if you want to run an italian version enable the row below
    // $sd->week = array('dom','lun','mar','mer','gio','ven','sab');
    $time=$sd->GetFirstRun("2011 * * 8:0",strtotime('now'));
    echo "first run will be at [".date("Y-m-d H:i:s",$time)."]";
?>

the output:
    "first run will be at [2011-01-01 08:00:00]"



GetLastRun()

<?php
require_once("class.scheduledate.php");

    $sd = new ScheduleDate;
    // if you want to run an italian version enable the row below
    // $sd->week = array('dom','lun','mar','mer','gio','ven','sab');
    $time=$sd->GetFirstRun("2011 * * 8:0",strtotime('now'));
    echo nl2br("first run will be at [".date("Y-m-d H:i:s",$time)."]\n");

    $time = $sd->GetLastRun();
    echo nl2br("last run will be at [".date("Y-m-d H:i:s",$time)."]\n");
?>

the output:
    "first run will be at [2011-01-01 08:00:00]"
    "last run will be at [2011-12-31 08:00:00]"

Renew(pattern,previousRunDate,timecheck)



<?php
require_once("class.scheduledate.php");

    $sd = new ScheduleDate;
    // if you want to run an italian version enable the row below
    // $sd->week = array('dom','lun','mar','mer','gio','ven','sab');
    $previousRunDate = "2011-1-1 8:0:0"; // this is the last expired valid date
    echo nl2br("previuos run date is [".date("Y-m-d D H:i:s",strtotime($previousRunDate))."]\n");
    $time = $sd->Renew("2011 * 2*wed,sat 8:0", $previousRunDate, strtotime('now'));
    if($time !== false) {
        $date = $sd->date;
        echo "renewed date to [".date("Y-m-d D H:i:s",$time)."] ";
    } else {
        echo "expired\n";
    }
?>

the output:
    "previuos run date is [2011-01-01 Sat 08:00:00]"
    "renewed date to [2011-01-05 Wed 08:00:00]"




if you want a real example of this class have a look of my script "pop3ml" to manage mailing lists with only a
POP3 account (and without a local smtp server)

Download both at http://www.phpclasses.org

Giuseppe Lucarelli
giu.lucarelli@gmail.com


enjoy!

For more information send a message to info at phpclasses dot org.