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

问题描述 投票:2回答:3

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

erlang ejabberd
3个回答
5
投票
timer提供了几个功能:

  • [apply_after, send_after,允许在一定时间后执行功能或发送消息,
  • [apply_interval, send_interval允许定期执行功能或发送消息。

结合了apply_after和apply_interval或发送间隔,您应该能够做您想做的。


5
投票
请参见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!"]).


2
投票
您可以使用erlang:send_after或erlang:start_timer执行函数或执行其他操作。同时,您可以使用timer:apply_after,但这可能会导致CPU使用率过高,因为timer是管理计时器的独立过程。使用erlang:send_after / 3和erlang:start_timer / 3创建计时器比使用计时器模块提供的计时器效率更高。
© www.soinside.com 2019 - 2024. All rights reserved.