加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

如何使用PHP建立与Asterisk管理器的持久连接?

发布时间:2020-12-13 16:44:02 所属栏目:PHP教程 来源:网络整理
导读:我正在尝试连接到Asterisk管理器界面,我遇到了代码阻塞问题,以及连接持久性问题.以下是我的内容,然后描述出现了什么问题: /** * The parameters for connecting to the server */ $params = array('server' = '192.168.1.100','port' = '5038');/** * Insta
我正在尝试连接到Asterisk管理器界面,我遇到了代码阻塞问题,以及连接持久性问题.以下是我的内容,然后描述出现了什么问题:

/**
 * The parameters for connecting to the server
 */
 $params = array('server' => '192.168.1.100','port' => '5038');

/**
 * Instantiate Asterisk object and connect to server
 */
 $ast = new Net_AsteriskManager($params);

/**
 * Connect to server
 */
 try {
    $ast->connect();
 } catch (PEAR_Exception $e) {
    echo $e;
 }

 /**
  * Login to manager API
  */
  try {
    $ast->login('admin','abcdefghi');
 } catch(PEAR_Exception $e) {
    echo $e;
 }

就连接而言,上面的代码是有效的.我可以通过它获取数据.

问题是发送查询需要很长时间,当我以实时模式(控制台)观察服务器时,我看到用户管理员在发送输出后正从服务器注销.

换句话说,即使我没有在代码中明确注销,’admin’也会被注销.如何使此连接持久化?

解决方法

Asterisk AMI不会自动关闭连接,但它是网络层的人,当它长时间检测到没有活动时(=超时)它会断开连接.要建立连接持久性,需要保持连接忙(=保持活动状态),每当连接空闲时,应用程序应以指定的时间间隔(= TTL)将保持活动数据包发送到目标服务器.我们可以使用任何类型的命令作为保持活动包,如星号,您可以使用“Ping”.

但是,如果您正在寻找一些现有的即用型解决方案,那么您可以使用一些AMI代理. here are some known AMI proxies

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读