IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> Php 与 Erlang 通信模块 peb 函数文档 -> 正文阅读

[PHP知识库]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 消息标识符。

<?php

//encode a simple atom

$msg = peb_encode('~a', array('hello'));

//encode a simple double

$msg = peb_encode('~d', array(3.1415926));

//encode a list with only one element

$msg = peb_encode('[~a]', array(array('hello')));

//encode a list with two element

$msg = peb_encode('[~a,~d]', array(array( 'hello', 3.1415926)));

//encode a tuple with only one element

$msg = peb_encode('{~a}', array(array( 'hello')));

//encode a list with two element

$msg = peb_encode('{~a,~i}', array(array( 'hello', 1234 )));

//a complex data encode 

$msg = peb_encode('{~i,{~a,[~s,~d]}}', array(array( 1234,array('pi',array('is',3.1415926)))));

?> 

八、解码 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_bypid

peb_close($link); 

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2022-03-03 15:48:22  更:2022-03-03 15:48:31 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 10:29:06-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码