Cron Design: Cron Script Part 2: Difference between revisions

no 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...)
 
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="top"
|-valign="top"
|
|
'''''Read Configuration file'':'''
'''''Read Configuration file'':'''
Line 17: Line 18:
|
|
'''''Function Used'':'''
'''''Function Used'':'''
<pre>
&lt;pre&gt;


$ini_array = parse_ini_file($file, true);
$ini_array = parse_ini_file($file, true);


</pre>
&lt;/pre&gt;
|-valign="top"
|-valign=&quot;top&quot;
|
|
'''''Extract Option Value'':'''
'''''Extract Option Value'':'''
* Having the structure preserved means the array can be scanned with&nbsp;<br />a foreach loop that targets only the block title.
* Having the structure preserved means the array can be scanned with&amp;nbsp;&lt;br /&gt;a foreach loop that targets only the block title.
* Hence array '''$key''' holds a block title.
* Hence array '''$key''' holds a block title.
{|
{|
|-
|-
|
|
<pre>
&lt;pre&gt;
foreach($ini_array as $key => $value){  
foreach($ini_array as $key =&gt; $value){  
}  
}  
</pre>
&lt;/pre&gt;
|}
|}
* 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>
&lt;pre&gt;
$tim = strtotime("now");        //current time
$tim = strtotime(&quot;now&quot;);        //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>
&lt;/pre&gt;
|}
|}
'''''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>
&lt;pre&gt;


[dtdns]
[dtdns]
Line 79: Line 80:
ref =  
ref =  
    
    
</pre>
&lt;/pre&gt;
|}
|}
'''''[[#top | Top]]'''''
'''''[[#top | Top]]'''''
Line 85: Line 86:
== Froreach logic ==
== Froreach logic ==
{|
{|
|-valign="top"
|-valign=&quot;top&quot;
|
|
'''''Description'':'''
'''''Description'':'''
Line 114: Line 115:
== Froreach logic - Alternative flow diagram==
== Froreach logic - Alternative flow diagram==
{|
{|
|-valign="top"
|-valign=&quot;top&quot;
|
|
'''''Description'':'''
'''''Description'':'''
Line 123: Line 124:


'''''Code Snippet'':'''
'''''Code Snippet'':'''
<pre>
&lt;pre&gt;
$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 => $value){    // Scan array's main keys
foreach($ini_array as $key =&gt; $value){    // Scan array's main keys


  $tim = strtotime("now");                        //current time
  $tim = strtotime(&quot;now&quot;);                        //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 > (float)$tim_s){    // New start or started
if((float)$tim &gt; (float)$tim_s){    // New start or started
   if( $ref != ""){                  // It was started
   if( $ref != &quot;&quot;){                  // It was started
     if( (float)$tim < (float)$ref ){ // Is it a triggered update  
     if( (float)$tim &lt; (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>
&lt;/pre&gt;


|
|
322

edits