Erlcron

实际业务中,多多少少逃不开定时作业,比如开服头七天各种活动的排名,然后通过邮件给玩家发奖励,如果erlang有crontab的话,就很爽了。配置个时间,然后就执行下函数就ok了。不然对于每个需求,都要自己开个进程去send_after或者由一个进程去管理,如果做不好的话,还是挺不好用的。

实际上,已经有人实现了,就是erlcron,https://github.com/erlware/erlcron

实现其实很简单,就是ecrn_agent.erl里面利用timeout来推动一个作业下一次执行,又是一个timeout使用示例。

erlcron有个好处,就是通过erlcron:set_datetime(DateTime).来看看实际执行的效果,起到简单测试作用。erlcron内部维护个虚假的时间,这样今天是星期一,作业是星期五执行的,那么可以将这个值改动为带周五就可以。

具体使用,看看https://github.com/erlware/erlcron 的文档就知道了,本身挺简单,这里就不多举例了。

Update Fri Sep 19 21:32:06 2014

实际业务使用,觉得erlcron太不好使了,特别是我们现在有个业务,月前25天打排位赛,之后小组淘汰赛,要开30+进程,特别不靠谱,其实开一个进程,随着时间推移,一直timeout下去就可以了。

我简单实现了个可以用的版本(有单元测试),跟erlcron差不多格式,我取名叫gs_cron,gs表示game_server。使用具体看测试代码,暂时没啥时间提供文档,https://github.com/roowe/gs_cron

1 comment — post a comment

danielyi

观摩一下。了解一下 erlang 。

发表评论

电子邮件地址不会被公开。 必填项已用*标注