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: 13 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!