2011-11-11 21 views
28

私が定義するよう設定されている複数のcronジョブがあります。複数のcronジョブと同じ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 

これらのcronジョブのそれぞれ異なるタスクを実行しますが、phpmailerの、PDFファイル作成、のGeoIPなどのように同じライブラリを使用し...

どのように私はこのcronjobを1つにまとめることができるので、同じファイルを何度も繰り返して含む50以上のファイルを作成する必要はありませんか?ここで

おかげ

答えて

47

は、私がお勧めするものです:

あなたはあなたのcron.phpファイルに
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... 

、その後:

<?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 
} 
関連する問題