2011-11-11 18 views
28

ı tanımlamak olarak ayarlanmıştır birden cronjobs vardır:birden cronjob aynı php dosyası

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 

bu cronjobs her farklı görevleri yapmak ama vb PHPMailer, pdf yaratıcısı, geoip gibi aynı kitaplıkları kullanır ...

Bu cronjob'yi bir arada nasıl birleştirebilirim, böylece aynı dosyayı içeren 50'den fazla dosya oluşturmam gerekmiyor mu?

sayesinde

İşte

cevap

47

tavsiye ne: senin cron.php dosyasında sonra

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

geçerek:

<?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 
} 
İlgili konular