2011-11-11 13 views
28

मैं कई cronjobs कि के रूप में परिभाषित सेटअप रहे हैं:कई cronjob ही 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 

इन cronjobs में से प्रत्येक के विभिन्न कार्यों है, लेकिन PHPMailer, पीडीएफ निर्माता, GeoIP आदि की तरह एक ही पुस्तकालयों का उपयोग ...

मैं इस cronjob को एक में कैसे जोड़ सकता हूं इसलिए मुझे 50+ फाइलें बनाने की ज़रूरत नहीं है जिसमें एक ही फ़ाइल शामिल है?

धन्यवाद

उत्तर

47

यहाँ मैं क्या सलाह देते हैं:

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

और फिर अपने cron.php फ़ाइल में आप करते हैं:

<?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 
} 
संबंधित मुद्दे