在 erlang 中的给定时间后自动调用的函数
Function called automatically after a given time in erlang
Erlang 中是否有任何函数会在给定的时间后自动调用,并且一旦触发它应该在给定的时间后自动调用,应该有无需一次又一次地触发它。我正在用 Erlang 编写一个模块,它在 ejabberd server
上执行清理任务。该模块一旦触发,需要每天自动调用。有什么指点吗?
参见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!"]).
库 timer 提供几个函数:
apply_after, send_after
允许在一定时间后执行功能或发送消息,
apply_interval, send_interval
允许执行功能或定期发送消息。
结合使用 apply_after 和 apply_interval 或发送间隔,您应该能够做您想做的事。
您可以使用 erlang:send_after
或 erlang:start_timer
来执行功能或执行其他操作。同时,可以使用timer:apply_after
,但可能会导致CPU的使用率过高,因为timer是一个单独的进程来管理timer。使用 erlang:send_after/3
和 erlang:start_timer/3
创建定时器比使用定时器模块提供的定时器要高效得多。
Erlang 中是否有任何函数会在给定的时间后自动调用,并且一旦触发它应该在给定的时间后自动调用,应该有无需一次又一次地触发它。我正在用 Erlang 编写一个模块,它在 ejabberd server
上执行清理任务。该模块一旦触发,需要每天自动调用。有什么指点吗?
参见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!"]).
库 timer 提供几个函数:
apply_after, send_after
允许在一定时间后执行功能或发送消息,apply_interval, send_interval
允许执行功能或定期发送消息。
结合使用 apply_after 和 apply_interval 或发送间隔,您应该能够做您想做的事。
您可以使用 erlang:send_after
或 erlang:start_timer
来执行功能或执行其他操作。同时,可以使用timer:apply_after
,但可能会导致CPU的使用率过高,因为timer是一个单独的进程来管理timer。使用 erlang:send_after/3
和 erlang:start_timer/3
创建定时器比使用定时器模块提供的定时器要高效得多。