2011-11-11 6 views
28

sam mam wiele cronjobs które są ustawione jako określenie:stwardnienie zadanie crona pliku 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 

każdy z tych cronjobs robić różne zadania, ale korzystają z tych samych bibliotek jak PHPMailer, twórca pdf, GeoIP etc ...

Jak mogę połączyć to cronjob w jedno, więc nie muszę tworzyć 50+ plików, które zawierają ten sam plik w kółko?

dzięki

Odpowiedz

47

Oto co polecam:

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... 

a następnie w pliku cron.php zrobić:

<?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 
}