我想在PHP项目中进行简单的类似cron的管理 有一些我想要的东西:
我在一个项目中有过这种调度系统的经验并且喜欢它。它提供了许多巧妙的东西:
我只是在project / cron子目录上使用/ bin / run-parts,但是没有设法按我的意愿分割日志。分割日志记录是非常好的功能。
所以,我只是觉得这种系统之前已经创建了很多次,有没有为PHP项目准备好使用的解决方案?基本上它只是一些更智能的运行部件相当于。应该再写一次吗?
P.S。还有更多像Jobman这样的特定于作业队列的解决方案。他们很棒,但这个问题是关于项目cron jobs轻量级解决方案。
答案 0 :(得分:2)
我们目前的工作采取了略微不同的方法。我们使用Jenkins(以前称为Hudson)来满足我们与PHP相关的调度需求。这很好,因为您可以利用现有的通知基础设施(jabber,电子邮件等),它与我们的代码发布的其他构建作业并列。还可以实时查看控制台输出,获取每次运行的成绩单等。
我最近记录了我们组织PHP作业的方式,以便我们可以轻松利用CLI中的应用程序框架,这就是Jenkins与作业的接口。
这是关于组织用于Jenkins或Hudson的PHP批处理作业的帖子:
答案 1 :(得分:0)
Periodic is a CRON compatible task manager。为了使它像你想要的那样工作,仍然有一些工作要做,但它应该给你一个很好的基础。
答案 2 :(得分:-1)
使用此功能:
function parse_crontab($time, $crontab)
{$time=explode(' ', date('i G j n w', strtotime($time)));
$crontab=explode(' ', $crontab);
foreach ($crontab as $k=>&$v)
{$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 *'));