次のように設定されている複数の cronjobs があります:
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 などの同じライブラリを使用します。
同じファイルを何度も含む 50 以上のファイルを作成しなくて済むように、この cronjob を 1 つにまとめるにはどうすればよいですか?
ありがとう
ベストアンサー1
私がお勧めするのは次の通りです:
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
}