xun*_*xun 14 php cron scheduling crontab scheduled-tasks
我需要开发一个能够在不支持crontab的服务器上工作的任务系统.
我问是否有任何现有代码可以采用cron字符串(例如'0 0,12 1*/2*'并返回下一次计划运行的时间戳.
如果找不到这样的代码那么我该怎么做呢?
ber*_*hoo 12
您可以使用此类PHP-Parse-cron-strings-and-compute-schedules
它还会计算最后一次计划的运行
使用此功能:
function parse_crontab($time, $crontab)
{$time=explode(' ', date('i G j n w', strtotime($time)));
$crontab=explode(' ', $crontab);
foreach ($crontab as $k=>&$v)
{$time[$k]=intval($time[$k]);
$v=explode(',', $v);
foreach ($v as &$v1)
{$v1=preg_replace(array('/^\*$/', '/^\d+$/', '/^(\d+)\-(\d+)$/', '/^\*\/(\d+)$/'),
array('true', $time[$k].'===\0', '(\1<='.$time[$k].' and '.$time[$k].'<=\2)', $time[$k].'%\1===0'),
$v1
);
}
$v='('.implode(' or ', $v).')';
}
$crontab=implode(' and ', $crontab);
return eval('return '.$crontab.';');
}
var_export(parse_crontab('2011-05-04 02:08:03', '*/2,3-5,9 2 3-5 */2 *'));
var_export(parse_crontab('2011-05-04 02:08:03', '*/8 */2 */4 */5 *'));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10387 次 |
| 最近记录: |