Agispeedy是包含在Freeiris项目中的一个部分. ENGLISH
Agispeedy是被设计用来替代Asterisk AGI用法的. 它比普通AGI模式快1000%,并且拥有更强的扩展性和稳定性.
Agispeedy特点:
以下表格为Asterisk扩展技术对比:
| 名称 | 速度 | 稳定 | 集群 |
|---|---|---|---|
| asterisk模块 | 最快 | 低 | 不能 |
| agi | 慢 | 高 | 不能 |
| fastagi | 很快 | 中等 | 可以 |
| agispeedy | 很快 | 很高 | 可以 |
/agispeedy/bin/agispeedy --verbose [Fri May 21 19:24:15 2010] Agispeedy 2.0 services on... [Fri May 21 19:24:15 2010] Loading static : demo_static [Fri May 21 19:24:15 2010] 2010/05/21-19:24:15 main (type Net::Server::PreFork) starting! pid(32528) [Fri May 21 19:24:15 2010] Binding to TCP port 4573 on host * [Fri May 21 19:24:15 2010] Setting gid to "0 0" [Fri May 21 19:24:15 2010] Setting up serialization via flock [Fri May 21 19:24:15 2010] Beginning prefork (6 processes) [Fri May 21 19:24:15 2010] Starting "6" children
你可以从SVN获取,linux下可以使用如下命令(请确定你的系统安装上了svn): >svn export http://darwin.freeiris.org/svn/freeiris/addition/agispeedy/ Win下可以使用专门的svn客户端,具体操作请自行研究。 你也可以直接访问 >http://darwin.freeiris.org/svn/freeiris/addition/agispeedy/来查看源码
进入到bin的目录后执行命令:
./install.pl
把contrib/agispeedy.init.centos拷贝到/etc/init.d/可实现agispeedy的开机启动
注意: 要以root用户执行
>cd agispeedy
>chmod +x install.pl
>./install.pl
[RESPONSE] Agispeedy Installer
[INPUT] continue to install agispeedy to /agispeedy (yes/no)?yes
......
[RESPONSE] set /etc/agispeedy
[RESPONSE] set agispeedy services
更多的AGIspeedy参数:
./agispeedy –verbose
这将输出agispeedy的服务信息
./agispeedy –quiet
agispeedy将在后台运行并且把信息写入log_files.
/etc/init.d/agispeedy start
如果你不是redhat系列的系统, 你可能需要手动安装初始脚本.
>ps ax|grep agispeedy 32424 ? Ss 0:00 /usr/bin/perl /agispeedy/bin/agispeedy -q -c /etc/agispeedy 32425 ? S 0:00 /usr/bin/perl /agispeedy/bin/agispeedy -q -c /etc/agispeedy 32426 ? S 0:00 /usr/bin/perl /agispeedy/bin/agispeedy -q -c /etc/agispeedy 32427 ? S 0:00 /usr/bin/perl /agispeedy/bin/agispeedy -q -c /etc/agispeedy 32428 ? S 0:00 /usr/bin/perl /agispeedy/bin/agispeedy -q -c /etc/agispeedy 32430 ? S 0:00 /usr/bin/perl /agispeedy/bin/agispeedy -q -c /etc/agispeedy 32431 ? S 0:00 /usr/bin/perl /agispeedy/bin/agispeedy -q -c /etc/agispeedy
1) 请先启动agispeedy服务.
编辑extensions.conf,在[default]下添加:
exten => 123456,1,NoOp('agispeedy demo')
exten => 123456,n,AGI(agi://127.0.0.1/demo_dynamic?number=7890)
exten => 123456,n,hangup
2) 如果你的agispeedy与asterisk不在同一台机器上,你需要修改”127.0.0.1”为你agispeedy服务所在的机器地址.
3) 拨打123456, 你会听到播放语音”7890”.
编辑etc下的agispeedy.conf.
# 这只是个简单的配置示例 [general] etc_path=/etc/agispeedy/ bin_path=/agispeedy/bin/ pid_path=/agispeedy/log/ lib_path=/agispeedy/lib/ log_path=/agispeedy/log/ var_path=/agispeedy/var/ # 运行初始化时需要的 [services] # * 的意思是绑定当前主机上所有可用的IP host=* # 4573是asterisk fastagi默认端口 port=4573 # 执行agispeedy的权限组和用户 user= group= # 如果你有强劲的cpu和足够多的内存你可以尝试修改下面的配置来获取更好的性能 min_servers=6 min_spare_servers=2 max_spare_servers=12 max_servers=64 max_requests=512 [log] # 是否记录系统日志yes/no,默认是开启 enable=yes # 设置日志等级,默认是 2 : # 0 错误,1 警告,2 通知,3 信息,4 debug level=2 [agispeedymodules] enable_dynamic=yes # 开启静态模块预加载功能 enable_static=yes # 动态模块后缀名 dynamic_ext=dam # 静态模块后缀名 static_ext=sam
Agispeedy可以自动加载用户所请求的模块.
例如: exten => 123456,n,AGI(agi://127.0.0.1/demo_dynamic?number=7890)
如果你需要新的功能可以编写相应模块后放在/agispeedy/var
注意:你的模块名和你的入口方法名必须是一样的,例如
abc.sam的入口方法名称必须是sub abc()
def.dam的入口方法名称必须是sub def()
demo_dynamic.dam:
# write by somebody
use foo; #你可以继续加载你需要的模块
sub demo
{
my $self = shift;
my $server_prop = $self->{server};
my $agi = $server_prop->{agi};
my $params = $agi->{params};
my $number = $self->_demo_count($params->{'number'});
$agi->say_digits($number);
exit;
}
sub _demo_count
{
return($_[0]);
}
Agispeedy支持hooks,你可以在每个子进程启动时先进行mysql的连接以便后面使用,这样可以减少程序执行时因等待数据库连接而造成时间等待.
编辑/agispeedy/lib/agispeedy_hook.pm
sub child_init_hook()
{
#你可以在这里加入数据库连接
#并且把该句柄注册到$self->{server}{dbh}
#这样你就可以在你的模块中直接使用该句柄了
}
在/agispeedy/var/demo.dam里
sub demo
{
my $self = shift;
my $dbh = $self->{server}{dbh};
}
Freeiris2 中国开源通讯使用Agispeedy替代所有的AGI应用
Sun bing hoowa.sun@gmail.com
Copyright © 2009, Sun bing hoowa.sun@gmail.com. Copyright © 2010, Fonoirs CO.,LTD.
基于GNU General Public License VERSION 2发布.
Agispeedy是一个开源并且免费的软件.
由使用Agispeedy而造成的任何问题和损失与开发者无关.
Sun bing hoowa.sun@gmail.com
|
||||
| Freeiris爱好者QQ群 43185599 |