在erlang中是否有任何函数在给定的时间后被自动调用,一旦被触发它应该在给定的时间后自动调用,应该不需要再次触发它。我是在erlang中编写一个模块,它在ejabberd服务器上执行清理任务。这个模块一旦触发就需要每天自动调用。任何指针
答案 0 :(得分:4)
请参阅timer:apply_after/4
。
示例:
-module(my_module).
-export([foo/1]).
foo(Text) ->
error_logger:info_msg(Text, []).
10000毫秒后调用foo:
timer:apply_after(10000, my_module, foo, ["Hello!"]).
答案 1 :(得分:4)
库定时器提供了几个功能:
apply_after, send_after
允许在一定时间后执行功能或发送消息,
apply_interval, send_interval
允许执行函数或定期发送消息。
结合apply_after和apply_interval或发送间隔,你应该能够做你想做的事。
答案 2 :(得分:1)
您可以使用erlang:send_after或erlang:start_timer来执行函数或执行其他操作。同时,你可以使用timer:apply_after,但它可能会导致CPU的使用率如此之高,因为timer是一个单独的进程来管理计时器。使用erlang创建计时器:send_after / 3和erlang:start_timer / 3比使用计时器模块提供的计时器更有效。