Erlang的熱更新
書本上的知識太過淺薄,再次稍微總結下erlang代碼更新方式。
%% Find object code for module Mod
{Mod, Bin, File} = code:get_object_code(Mod),
%% and load it on all nodes including this one
{ResL, _} = rpc:multicall(code, load_binary, [Mod, Bin, File,]),
%% and then maybe check the ResL list.
%如果是在指定節點上執行熱更新還可以這樣:
{_Module, Binary, Filename} = code:get_object_code(Module),
rpc:call(Node, code, load_binary, [Module, Filename, Binary])
%也可這樣:
network_load(Module)->
{_Module, Binary, Filename} =
code:get_object_code(Module),
[rpc:call(Node, code, load_binary, [Module, Filename,
Binary]) || Node <- nodes()],
ok.
network_load(Node, Module)->
{_Module, Binary, Filename} =
code:get_object_code(Module),
rpc:call(Node, code, load_binary, [Module, Filename,
Binary]),
ok.
%% Find object code for module Mod
{Mod, Bin, File} = code:get_object_code(Mod),
%% and load it on all nodes including this one
{ResL, _} = rpc:multicall(code, load_binary, [Mod, Bin, File,]),
%% and then maybe check the ResL list.
%如果是在指定節點上執行熱更新還可以這樣:
{_Module, Binary, Filename} = code:get_object_code(Module),
rpc:call(Node, code, load_binary, [Module, Filename, Binary])
%也可這樣:
network_load(Module)->
{_Module, Binary, Filename} =
code:get_object_code(Module),
[rpc:call(Node, code, load_binary, [Module, Filename,
Binary]) || Node <- nodes()],
ok.
network_load(Node, Module)->
{_Module, Binary, Filename} =
code:get_object_code(Module),
rpc:call(Node, code, load_binary, [Module, Filename,
Binary]),
ok.
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.