14 require
'../../_src/_config.php';
17 define(
'CRON_RUNNING' ,
'CRONRUN' );
23 logWrite(
'chiamata cron API',
'cron', LOG_INFO );
26 mysqlQuery(
$cf[
'mysql'][
'connection'],
'LOCK TABLES cron WRITE, cron_log WRITE, job WRITE' );
32 $cf[
'cron'][
'results'] = array();
36 $cf[
'mysql'][
'connection'],
37 'SELECT * FROM cron WHERE '.
38 '( minuto = ? OR minuto IS NULL ) AND '.
39 '( ora = ? OR ora IS NULL ) AND '.
40 '( giorno_del_mese = ? OR giorno_del_mese IS NULL ) AND '.
41 '( mese = ? OR mese IS NULL ) AND '.
42 '( giorno_della_settimana = ? OR giorno_della_settimana IS NULL ) AND '.
43 '( settimana = ? OR settimana IS NULL ) AND '.
44 '( from_unixtime( timestamp_esecuzione, "%Y%m%d%H%i") < ? OR timestamp_esecuzione IS NULL ) ',
46 array(
's' => intval( date(
'i',
$time ) ) ),
47 array(
's' => date(
'G',
$time ) ),
48 array(
's' => date(
'j',
$time ) ),
49 array(
's' => date(
'n',
$time ) ),
50 array(
's' => date(
'w',
$time ) ),
51 array(
's' => date(
'W',
$time ) ),
52 array(
's' => date(
'YmdHi',
$time ) )
57 logWrite(
'criteri di ricerca -> ' . date(
'i',
$time ) .
' ' . date(
'G',
$time ) .
' ' . date(
'j',
$time ) .
' ' . date(
'n',
$time ) .
' ' . date(
'w',
$time ) .
' ' . date(
'W',
$time ),
'cron', LOG_INFO );
60 foreach(
$tasks as $task ) {
61 mysqlQuery(
$cf[
'mysql'][
'connection'],
'UPDATE cron SET timestamp_esecuzione = ? WHERE id = ?', array( array(
's' =>
$time ), array(
's' => $task[
'id'] ) ) );
66 $cf[
'mysql'][
'connection'],
67 'SELECT * FROM job WHERE '.
68 'timestamp_apertura <= ? AND timestamp_apertura IS NOT NULL AND timestamp_completamento IS NULL '.
69 'AND ( from_unixtime( timestamp_esecuzione, "%Y%m%d%H%i") < ? OR timestamp_esecuzione IS NULL )',
71 array(
's' =>
$time ),
72 array(
's' => date(
'YmdHi',
$time ) )
77 logWrite(
'trovati ' . count(
$jobs ) .
' job',
'cron', LOG_DEBUG );
80 foreach(
$jobs as $job ) {
82 mysqlQuery(
$cf[
'mysql'][
'connection'],
'UPDATE job SET timestamp_esecuzione = ? WHERE id = ?', array( array(
's' =>
$time ), array(
's' => $job[
'id'] ) ) );
90 foreach(
$tasks as $task ) {
93 # // verifico che il task non sia già stato eseguito nel minuto corrente 94 # if( date( 'YmdHi', $task['timestamp_esecuzione'] ) != date( 'YmdHi', $time ) ) { 100 fwrite(
$cHnd,
'eseguo ' . $task[
'task'] .
' x' . $task[
'iterazioni'] . PHP_EOL );
103 logWrite(
'eseguo il task ' . $task[
'id'] .
' -> ' . $task[
'task'],
'cron', LOG_DEBUG );
105 # // array dei risultati 106 # $cf['cron']['results'] = array(); 109 for( $iter = 0; $iter < $task[
'iterazioni']; $iter++ ) {
110 logWrite(
'iterazione #' . $iter .
' per il task ' . $task[
'id'] .
' -> ' . $task[
'task'],
'cron', LOG_DEBUG );
111 fwrite(
$cHnd,
'iterazione #' . $iter . PHP_EOL );
113 $cf[
'cron'][
'results'][
'task'][ $task[
'task'] ][ $task[
'id'] ] = array_replace_recursive(
$status, array(
'esecuzione' => time() ) );
114 if( ! isset( $task[
'delay'] ) || empty( $task[
'delay'] ) ) { $task[
'delay'] = 3; }
115 sleep( $task[
'delay'] );
119 mysqlQuery(
$cf[
'mysql'][
'connection'],
'INSERT INTO cron_log ( id_cron, testo, timestamp_esecuzione ) VALUES ( ?, ?, ? )', array( array(
's' => $task[
'id'] ), array(
's' => json_encode(
$cf[
'cron'][
'results'] ) ), array(
's' =>
$time ) ) );
122 mysqlQuery(
$cf[
'mysql'][
'connection'],
'UPDATE cron SET timestamp_esecuzione = ? WHERE id = ?', array( array(
's' =>
$time ), array(
's' => $task[
'id'] ) ) );
130 # logWrite( 'task ' . $task['id'] . ' già eseguito alle ' . date( 'Y-m-d H:i', $time ), 'cron', LOG_NOTICE ); 138 foreach(
$jobs as $job ) {
141 # // verifico che il job non sia già stato eseguito nel minuto corrente 142 # if( date( 'YmdHi', $job['timestamp_esecuzione'] ) != date( 'YmdHi', $time ) ) { 145 logWrite(
'eseguo il job ' . $job[
'id'] .
' -> ' . $job[
'job'],
'cron', LOG_DEBUG );
147 # // array dei risultati 148 # $cf['cron']['results'] = array(); 154 $cf[
'cron'][
'results'][
'job'][ $job[
'job'] ][ $job[
'id'] ] = array_replace_recursive(
$status, array(
'esecuzione' => time() ) );
157 mysqlQuery(
$cf[
'mysql'][
'connection'],
'UPDATE job SET timestamp_esecuzione = ?, workspace = ? WHERE id = ?', array( array(
's' =>
$time ), array(
's' => serialize(
$wksp ) ), array(
's' => $job[
'id'] ) ) );
162 # logWrite( 'job ' . $job['id'] . ' già eseguito alle ' . date( 'Y-m-d H:i', $time ), 'cron', LOG_NOTICE ); 170 appendToFile(
'-- ' . date(
'Y-m-d H:i:s' ) . PHP_EOL . print_r(
$cf[
'cron'][
'results'],
true ),
'var/log/cron/' . date(
'Ymd' ) .
'.log' );
foreach( $tasks as $task) $jobs
logWrite( $m, $f='site', $l=LOG_NOTICE, $d=DIRECTORY_LOG, $t=CURRENT_LOG_LEVEL, $s=SITE_STATUS)
scrive un messaggio nei log del sito