2011-11-11 17 views
28

ho più cronjobs che sono settati come definire:cronjob più file stesso php

0 1 * * * php -q /home/user/cron/cron1.php 
20 1 * * * php -q /home/user/cron/cron2.php 
40 1 * * * php -q /home/user/cron/cron3.php 
0 2 * * * php -q /home/user/cron/cron4.php 

ciascuno di questi cronjobs svolgere compiti diversi, ma usano le stesse librerie come phpmailer, pdf creator, geoip ecc ...

come posso combinare questo cronjob in uno così non devo creare più di 50 file che include lo stesso file più e più volte?

grazie

risposta

47

Ecco cosa vi consiglio:

0 1 * * * php -q /home/user/cron/cron.php --task=task1 
20 1 * * * php -q /home/user/cron/cron.php --task=task2 
40 1 * * * php -q /home/user/cron/cron.php --task=task3 
#etc... 

e poi nel file cron.php fare:

<?php 

// include libraries 

function getArguments() { 
    $argument = array(); 
    for($i = 1; $i < $_SERVER['argc']; ++$i) { 
    if(preg_match('#--([^=]+)=(.*)#', $_SERVER['argv'][$i], $reg)) { 
     $argument[$reg[1]] = $reg[2]; 
    } 
    } 
    return $argument; 
} 

$argv = getArguments(); 

if($argv['task'] == 'task1') { 
    // do task 
} 
elseif($argv['task'] == 'task2') { 
    // do task 
}