介紹git
Erlcron實現相似Linux下面的cron的計劃任務。github
源碼下載地址:https://github.com/erlware/erlcronspa
原理code
Erlcron進程監控樹server
|
ecrn_cron_supblog |
ecrn_agentthree |
ecrn_sup進程 |
ecrn_reg_serverget |
|
|
ecrn_control源碼 |
|
Erlcron利用gen_server的timeout機制實現定時;
添加一項定時任務,會在ecrn_cron_sup下面建立子進程ecrn_agent,並在ecrn_reg_server註冊本身;
取消一項定時任務,則在ecrn_reg_server找到進程,而後stop該ecrn_agent。
使用
添加任務
{{once, 3600}, {io, fwrite, ["Hello, world!~n"]}} {{once, {12, 23, 32}}, {io, fwrite, ["Hello, world!~n"]}} {{daily, {3, 30, pm}}, fun() -> io:fwrite("It's three thirty~n") end} {{weekly, thu, {2, am}}, {io, fwrite, ["It's 2 Thursday morning~n"]}}
取消任務
erlcron:cancel(JobRef).