我对crontab间隔格式有点混淆。重点是我想从“20分钟”,“16小时30分钟”等人类可读字符串中获得间隔。这由PHP DateTime already完成。但我需要的是传递crontab的有效字符串为exec(sprintf('echo "%s %s %s * * %s" | crontab', $minute, $hour, $day, $command));
。总之,这里是样品的PHP脚本PHP,crontab,DateInterval:将人可读的间隔转换为crontab格式
<?php
function getCrontabInterval($timestring)
{
$interval = DateInterval::createFromDateString($timestring);
$minute = $interval->i > 0 ? "*/{$interval->i}" : '*';
$hour = $interval->h > 0 ? "*/{$interval->h}" : '*';
$day = $interval->d > 0 ? "*/{$interval->d}" : '*';
$crontab = sprintf('echo "%s %s %s * * %s" | crontab', $minute, $hour, $day, '%command%');
echo "Days:\t\t", $interval->d, "\n",
"Hours:\t\t", $interval->h, "\n",
"Minutes:\t", $interval->i, "\n",
"COMMAND:\t", $crontab, "\n";
}
getCrontabInterval($_SERVER['argv'][1]);
,其输出:
[email protected]:~/www/bin$ php periodical.php '2 hours 25 minutes'
Days: 0
Hours: 2
Minutes: 25
COMMAND: echo "*/25 */2 * * * %command%" | crontab
所以,将把 “*/25 */2 * * *” 的cron值匹配运行命令每次2小时25分钟?或者它应该像“0/25 0/2 * * *”一样?从手册中我不清楚。以及如何与天行事?
UPD:在每个 “2小时25分钟” 我的意思在0:00运行,2:25,4:50,7:15和等
SOLUTION: 使用双组分值用于与间隔一些手动建议使用20分钟,3小时,4天等数值。
你想每2小时25分钟运行一次吗?或者每2小时25分钟? – 2011-02-23 21:14:44
我的意思是0:00,2:25,4:50,7:15等 – 2011-02-23 21:23:16