在erlang中给定时间后自动调用的函数

时间:2015-04-21 06:15:07

标签: erlang ejabberd

在erlang中是否有任何函数在给定的时间后被自动调用,一旦被触发它应该在给定的时间后自动调用,应该不需要再次触发它。我是在erlang中编写一个模块,它在ejabberd服务器上执行清理任务。这个模块一旦触发就需要每天自动调用。任何指针

3 个答案:

答案 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比使用计时器模块提供的计时器更有效。