Cron Design: Cron Script Part 2: Difference between revisions
Cron Design: Cron Script Part 2 (view source)
Revision as of 10:23, 24 November 2010
, 24 November 2010no edit summary
(New page: {{Nav Cron Design}} At the heart of Uniform Server’s portable Cron is a configuration file. This is periodically read into an array the period is defined by Cron time, which has a defaul...) |
Upazixorys (talk | contribs) No edit summary |
||
Line 1: | Line 1: | ||
=[http://osobageqys.co.cc UNDER COSTRUCTION, PLEASE SEE THIS POST IN RESERVE COPY]= | |||
{{Nav Cron Design}} | {{Nav Cron Design}} | ||
At the heart of Uniform Server’s portable Cron is a configuration file. This is periodically read into an array the period is defined by Cron time, which has a default setting of one minute. The array is scanned line-by-line comparing any time settings to the current time on finding a match the corresponding script is run. | At the heart of Uniform Server’s portable Cron is a configuration file. This is periodically read into an array the period is defined by Cron time, which has a default setting of one minute. The array is scanned line-by-line comparing any time settings to the current time on finding a match the corresponding script is run. | ||
Line 9: | Line 10: | ||
Every time the script is run the configuration file is read into an array. First task of the foreach-loop is to extract a block’s option values. Each time around the loop selects a new block and extracts its option values. | Every time the script is run the configuration file is read into an array. First task of the foreach-loop is to extract a block’s option values. Each time around the loop selects a new block and extracts its option values. | ||
{| | {| | ||
|-valign= | |-valign="top" | ||
| | | | ||
'''''Read Configuration file'':''' | '''''Read Configuration file'':''' | ||
Line 17: | Line 18: | ||
| | | | ||
'''''Function Used'':''' | '''''Function Used'':''' | ||
<pre> | |||
$ini_array = parse_ini_file($file, true); | $ini_array = parse_ini_file($file, true); | ||
</pre> | |||
|-valign= | |-valign="top" | ||
| | | | ||
'''''Extract Option Value'':''' | '''''Extract Option Value'':''' | ||
* Having the structure preserved means the array can be scanned with | * Having the structure preserved means the array can be scanned with&nbsp;<br />a foreach loop that targets only the block title. | ||
* Hence array '''$key''' holds a block title. | * Hence array '''$key''' holds a block title. | ||
{| | {| | ||
|- | |- | ||
| | | | ||
<pre> | |||
foreach($ini_array as $key = | foreach($ini_array as $key => $value){ | ||
} | } | ||
</pre> | |||
|} | |} | ||
* This $key is used to target options in the bock as follows: | * This $key is used to target options in the bock as follows: | ||
Line 39: | Line 40: | ||
|- | |- | ||
| | | | ||
<pre> | |||
$tim = strtotime( | $tim = strtotime("now"); //current time | ||
$tim_s = strtotime($ini_array[$key]['start']); | $tim_s = strtotime($ini_array[$key]['start']); | ||
$period = $ini_array[$key]['period']; | $period = $ini_array[$key]['period']; | ||
$path = $ini_array[$key]['path']; | $path = $ini_array[$key]['path']; | ||
$ref = $ini_array[$key]['ref']; | $ref = $ini_array[$key]['ref']; | ||
</pre> | |||
|} | |} | ||
'''''Note'':''' All times are converted to Unix timestamps. | '''''Note'':''' All times are converted to Unix timestamps. | ||
Line 53: | Line 54: | ||
| | | | ||
'''''Configuration file example'':''' | '''''Configuration file example'':''' | ||
<pre> | |||
[dtdns] | [dtdns] | ||
Line 79: | Line 80: | ||
ref = | ref = | ||
</pre> | |||
|} | |} | ||
'''''[[#top | Top]]''''' | '''''[[#top | Top]]''''' | ||
Line 85: | Line 86: | ||
== Froreach logic == | == Froreach logic == | ||
{| | {| | ||
|-valign= | |-valign="top" | ||
| | | | ||
'''''Description'':''' | '''''Description'':''' | ||
Line 114: | Line 115: | ||
== Froreach logic - Alternative flow diagram== | == Froreach logic - Alternative flow diagram== | ||
{| | {| | ||
|-valign= | |-valign="top" | ||
| | | | ||
'''''Description'':''' | '''''Description'':''' | ||
Line 123: | Line 124: | ||
'''''Code Snippet'':''' | '''''Code Snippet'':''' | ||
<pre> | |||
$ini_array = parse_ini_file($file, true); // Read cron.ini into array | $ini_array = parse_ini_file($file, true); // Read cron.ini into array | ||
foreach($ini_array as $key = | foreach($ini_array as $key => $value){ // Scan array's main keys | ||
$tim = strtotime( | $tim = strtotime("now"); //current time | ||
$tim_s = strtotime($ini_array[$key]['start']); // Start time | $tim_s = strtotime($ini_array[$key]['start']); // Start time | ||
$period = $ini_array[$key]['period']; // Period | $period = $ini_array[$key]['period']; // Period | ||
Line 133: | Line 134: | ||
$ref = $ini_array[$key]['ref']; // Repeat time marker | $ref = $ini_array[$key]['ref']; // Repeat time marker | ||
if((float)$tim | if((float)$tim > (float)$tim_s){ // New start or started | ||
if( $ref != | if( $ref != ""){ // It was started | ||
if( (float)$tim | if( (float)$tim < (float)$ref ){ // Is it a triggered update | ||
continue; // No: Start next foreach | continue; // No: Start next foreach | ||
} | } | ||
Line 147: | Line 148: | ||
}//if | }//if | ||
}// End foreach | }// End foreach | ||
</pre> | |||
| | | |