AQL (Astconf Query Language) 是用于查询,修改,插入和删除Asterisk配置文件的类sql语法的解析器,是基于php的一个库,你可以很容易和方便的使用它. ENGLISH
AQL的目的是为了使让asterisk的配置文件更容易控制,它快速而且可靠.你甚至可以使用通常的SQL语句来控制配置文件而不用再担心你自己手动写入时格式是否正确的问题
建议:
<?
include("aql.php");
// 从sip.conf查询8001的设置
$aql = new aql;
$aql->set('basedir','/etc/asterisk/');
$db = $aql->query("select * from sip.conf where section='8001'");
print_r($db);
?>
输出:
Array
(
[8888] => Array
(
[type] => friend
.....
)
)
从SVN: >svn export http://darwin.freeiris.org/svn/freeiris/addition/aql/
拷贝inc/及其下所有文件到你的程序目录.
加载aql.php到你程序,例如:
<?
require("../inc/aql.php");
$a = new aql();
if (!$a->set('basedir','./')) {
echo __LINE__.' '.$a->get_error();
}
$a->query(....);
.....
?>
命令行模式类似于mysql控制台.
aql源码目录: chmod +x aqlcli.php ./aqlcli.php <config_base_path> 例如: ./aqlcli.php /etc/asterisk/ Welcome to the AQL command line interface. Commands end pass Enter key Your AQL Library version : 1.0 , AQL_Confparser Version : 0.3 键入'help'查看帮助. AQLcli>select * from sip.conf (<-type this) 输出结果
对AQL对象进行设置.
执行AQL语法
关于语法的更多详细请参看Query Language Interface Reference
提交操作. 默认情况下不需要手动执行,除非你设置'autucommit'为false.
# 系统将一步步执行操作,如果不commit,你的删除操作将无效.
$AQL->set('autocommit','false');
$AQL->query("select * from sip.conf");
$AQL->query("delete from sip.conf where section='8001'");
$AQL->commit("sip.conf");
回滚. 当'autocommit'设置为true才需要此操作
返回最后错误信息
获取最后一条AQL命令影响的行数
AQL的语法如下:
查询 :
SELECT * FROM <config_file>
[WHERE <condition> [AND <condition> ...]]
[LIMIT [<offset>,]<count>]
编辑 :
UPDATE <config_file> SET key=value[,key2=value2]
[WHERE <condition> [AND <condition> ...]]
[LIMIT [<offset>,]<count>]
添加 :
ALTER TABLE <config_file> ADD key=value[,key2=value2...] [AFTER(keyname)|BEFORE(keyname)]
[WHERE <condition> [AND <condition> ...]]
[LIMIT [<offset>,]<count>]
删除 :
ALTER TABLE <config_file> DROP key,[key2...]
[WHERE <condition> [AND <condition> ...]]
[LIMIT [<offset>,]<count>]
添加新section和数据:
INSERT INTO <config_file> SET key=value[,key2=value2]
删除section :
DELETE FROM <config_file>
[WHERE <condition> [AND <condition> ...]]
[LIMIT [<offset>,]<count>]
更换路径(类似于$aql->set('basedir',path)) :
USE <path>
相对于SQL来说AQL关键字是不区分大小写的.但表名,字段名,数据则有大小写区分.
只有名为”section =“才支持,因为”section”在asterisk配置文件中是唯一的.
WHERE可以让你指定查询的条件,AQL允许你使用and关键字,但没有or
# 查询8001到8004的分机. where section >= 8001 and section <= 8004 # query results from unsection in any files. where section = ''
比较 : = != < > <= >= 文字匹配 : like '%string' like 'string%' like '%string%'
注意: 类似'%string%'这样的操作会比较慢.
LIMIT允许你限定查询的数量和指定数据游标.
limit 10 limit 10,10
所有功能的接口继承于 aql_confparser.php.
返回aql_confparser.php的版本
返回全部的数据库数据
注意: 数据库数据是包含了所有的配置文件.
从数据库中返回解析过的配置信息
返回提交的列表
打开配置文件
重新加载和解析指定的配置文件.
保存配置到指定文件.
检查指定文件是否存在,返回true或false
设置数据库变量为null
数据位置
$position:
删除section中的关键字
添加一个新的section和相关数据
删除指定的section
Sun bing hoowa.sun@gmail.com.
Copyright © 2010, Fonoirs CO.,LTD.
本软件基于GPL2协议释出.
|
||||
| Freeiris爱好者QQ群 43185599 |