Php 与 Erlang 通信模块 peb 函数文档

一、打开与 Erlang 节点的连接

resource peb_connect ( string $server , string $cookie )

参数:

$server:erlang节点信息,格式如 nodename@host.domain

$cookie:用于与此 Erlang 节点通信的 Cookie

返回值:

成功时返回 Erlang 节点链接标识符,失败时返回 FALSE 

注意:

脚本执行结束后,指向服务器的链接将立即关闭,除非通过显式调用 peb_close() 来提前关闭

$link = peb_connect('node@host.domain',  'secret_cookie');if (!$link) {die('Could not connect: ' . peb_error());
}peb_close($link);

二、打开与 Erlang 节点的持久连接

resource peb_pconnect ( string $server , string $cookie )

参数:同上

返回值:同上

注意:

在连接时,该函数将首先尝试查找已打开的(持久性)链接,该链接已使用相同的服务器和Cookie。如果找到一个,将返回它的标识符,而不是打开一个新连接。

当脚本执行结束时,与 Erlang 节点的连接将不会关闭,该链接将保持打开状态以供将来使用。

$link = peb_pconnect('node@host.domain',  'secret_cookie');if (!$link) {die('Could not connect: ' . peb_error());
}

三、关闭 Erlang 节点连接

bool peb_close ([ resource $link_identifier ] )

参数:

$link_identifier :Erlang 节点链接标识符,默认是打开的最后一个链接

返回值:

成功时返回 TRUE,失败时返回 FALSE

四、获取有关建立的链接的详细信息

array peb_linkinfo ([ resource $link_identifier ] )

参数:

$link_identifier :Erlang 节点链接标识符,默认是打开的最后一个链接

返回值:

在成功时返回有关链接的信息,或在失败时返回 FALSE 的信息

$link = peb_connect('sadly-desktop@sadly-desktop',  'secret_cookie');if (!$link) {die('Could not connect: ['  .  peb_errno() .  ']'  .  peb_error() );
}$ret =  peb_linkinfo($link);print_r($ret);peb_close($link);// 上面的示例将输出Array
([thishostname] => sadly-desktop[thisnodename] => peb_client_8822_12@sadly-desktop[thisalivename] => peb_client_8822_12[connectcookie] => secret_cookie[creation] => 12[is_persistent] => 0
)

五、返回最后一个 peb 操作函数中的错误信息

string peb_error ()

参数:无

返回值:错误的文本信息,如果未发生错误,则返回 ''(空字符串)

$link = peb_connect('node@host.domain',  'secret_cookie');if (!$link) {die('Could not connect: ['  .  peb_errno() .  ']'  .  peb_error() );
}// 上面的示例将输出类似于以下内容的内容:Could not connect: [2] ei_connect error

六、返回上一个 peb 操作中错误消息的错误码

int peb_errno ()

参数:无

返回值:错误的文本信息,如果未发生错误,则返回 0(零)

七、对 Erlang 消息内容进行编码

resource peb_encode ( string $format_string , array $data )

参数:

$format_string:格式字符串由一个或多个指令组成

~a - an atom
~s - a string
~b - a binary (contain 0x0 in string)
~i - an integer
~l - a long integer
~u - an unsigned long integer
~f - a float
~d - a double float
~p - an erlang pid

$data:要发送到 Erlang 节点的数据。使用数组包装的初始数据、元组和列表数据必须使用额外的维度进行包装

返回值:成功时返回 Erlang 消息标识符,失败时返回 FALSE 消息标识符。

 

八、解码 erlang 消息

array peb_decode (resource $message_identifier )

参数:

$message_identifier:peb_receive() 收到的 Erlang 消息的资源标识符

返回值:返回一个数组,该数组包含消息中的所有数据,或在失败时返回 FALSE

$link = peb_connect('sadly-desktop@sadly-desktop',  'secret'); if (!$link) { die('Could not connect: ' . peb_error()); 
} $msg = peb_encode('[~p,~a]', array( array($link,'getinfo'))); 
//The sender must include a reply address.  use ~p to format a link identifier to a valid Erlang pid.peb_send_byname('pong',$msg,$link); $message = peb_receive($link);$rs= peb_decode( $message) ;print_r($rs);peb_close($link); 

九、从 Erlang 节点接收 Erlang 消息

resource peb_receive ([ resource $link_identifier ] )

参数:

$message_identifier:Erlang 节点链接标识符,默认是打开的最后一个链接

返回值:成功时返回 Erlang 消息标识符,失败时返回 FALSE 

十、按进程名称发送 Erlang 消息

bool peb_send_byname ( string $registered_process_name , resource $message_identifier ,[ resource $link_identifier ] )

参数:

$registered_process_name :将 Erlang 消息发送到与指定链接标识符关联的 Erlang 节点

$message_identifier:由 peb_encode() 的 Erlang 消息

$link_identifier:Erlang 节点链接标识符,默认是打开的最后一个链接

返回值:

成功时返回 TRUE,失败时返回 FALSE

$link = peb_connect('node@host.domain',  'secret_cookie');if (!$link) {die('Could not connect: ' . peb_error());
}$msg = peb_encode('[~a,~a]', array(array( 'hello', 'friend' )));peb_send_byname('pong',$msg,$link);peb_close($link);

十一、按进程 ID 发送 Erlang 消息

bool peb_send_bypid ( resource $process_id , resource $message_identifier ,[ resource $link_identifier ] )

参数:

$process_id:Erlang 节点上的进程 ID

$message_identifier:由 peb_encode() 的 Erlang 消息

$link_identifier:Erlang 节点链接标识符,默认是打开的最后一个链接

返回值:

成功时返回 TRUE,失败时返回 FALSE

$link = peb_connect('sadly-desktop@sadly-desktop',  'secret'); if (!$link) { die('Could not connect: ' . peb_error()); 
} $msg = peb_encode('[~p,~a]', array(array($link,'getinfo')));//The sender must include a reply address.  use ~p to format a link identifier to a valid Erlang pid.peb_send_byname('pong',$msg,$link); $message = peb_receive($link);$rs= peb_decode( $message) ;print_r($rs);$serverpid = $rs[0][0];$message = peb_encode('[~s]', array(array( 'how are you')));peb_send_bypid($serverpid,$message,$link); //just demo for how to use peb_send_bypidpeb_close($link); 


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部