多个cronjob同一个PHP文件


multiple cronjob same php file

我有多个按照定义设置的cronjob:

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

每个cronjob执行不同的任务,但使用相同的库,如phpmailer, PDF creator, geoip等…

我如何将这个cronjob合并成一个,这样我就不必创建50多个文件,这些文件一遍又一遍地包含相同的文件?

谢谢

我的建议是:

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
}