喜悦国际村 » LAMP进阶文章 » SQLB : SQL Load Balancer安装试用

页: [1]
sadly2007-10-25 10:08 AM
SQLB : SQL Load Balancer安装试用

SQLB : SQL Load Balancer安装试用Submitted by tim on 2007, August 12, 4:13 PM. LAMP

[url]http://www.phpec.com/?action=show&id=34[/url]

SQLB是一个开源的数据库连接池,可以有效地提高数据库的性能,支持oracle,mysql,postgreSQ,虽然最后更新已是四年前,但仍是一个不错的选择...

1.下载

SQLB是c/s结构,其中的C部分提供PHP及perl等接口,源代码及相关需求可在以下地址下载:
[url]http://sqlb.sourceforge.net/frameset.html[/url]

2.安装(本文以支持mysql为例,安装SQLB前,请先安装好MYSQL)

a.安装sqlb的server端

tar -zxvf sqlb-2.4.8.taz
cd sqlb-2.4.8

./configure --with-mysql-libs=/path-to-mysql/lib/ --with-mysql-includes=/path-to-mysql/include/
make
make install

#注,configure时,要指定mysql的lib和include目录

安装完成后,要建立sqlb用户,并将源码中的conf/sqlb.conf拷至用户目录:

adduser -g nobody sqlb
chmod 770 ~sqlb/

cp ./conf/sqlb.conf ~sqlb/sqlb.conf
chown sqlb. ~sqlb/sqlb.conf

#sqlb.conf为sqlb的运行配置文件,编辑此文件加入数据库连接参数

至此,可以执行sqlb start启动sqlb了

#如果你编译时指定了prefix将sqlb安装到其它目录,请使用完整路径,要在开机自动运行,将源码中的init/sqlb.init复制到 /etc/init.d/sqlb.init(不能改名成sqlb),修改其中$sqlb_prefix指向你sqlb安装路径,再运行以下命令加入:

chkconfig --add sqlb.init
service sqlb.init start //启动
service sqlb.init stop //停止


#如果启动时提示找不到libmysqlclient.so.15,你需要将此文件(一般在mysql的lib目录)复制至PATH路径中(如:/usr/lib)


3.安装sqlb php 模块

sqlb的客户端可以编译进php内置模块,也可以编译成动态模块加载(so),方法如下:

先解压:

tar -zxvf sqlb-php-module-1.6.tgz
cd sqlb-php-module-1.6

a.静态编译

将源码目录的sqlb目录复制至php源码的ext目录,执行./buildconf
完成后,执行./configure --help|grep sqlb,你可以看到相关信息,此时你可以重新编译PHP,并使用--with-sqlb=/path-to-sqlb来加入sqlb支持,

b.动态模块

在sqlb目录下,执行:

phpize #如果提示无此命令,你可以加上完整路径(在php安装目录的bin下)
./configure --with-sqlb=/path-to-sqlb --with-php-config=/path-to-php/bin/php-config
make
make install

注意:sqlb本身不支持php5,所以在make时会出错,提示类似

sqlb.c:42: error: `BYREF_NONE' undeclared here (not in a function)

需要简单修改一下sqlb的源码,打开sqlb.c,定位到42行

注释掉42行,并将ZEND_FE的第二参数改为NULL

原代码:

static unsigned char argument_type[] = { 5, BYREF_NONE, BYREF_NONE, BYREF_NONE, BYREF_FORCE, BYREF_NONE };
zend_function_entry sqlb_functions[] = {
        ZEND_FE(accelsqlb, argument_type)
        {NULL, NULL, NULL}

修改成:


C++代码
//static unsigned char argument_type[] = { 5, BYREF_NONE, BYREF_NONE, BYREF_NONE, BYREF_FORCE, BYREF_NONE };   
zend_function_entry sqlb_functions[] = {   
        ZEND_FE(accelsqlb, NULL)   
        {NULL, NULL, NULL}  

经此修改,就可顺利make && make install了

完成后,会生成一个sqlb.so文件,将它加入php.ini的extension中

安装好后,查看phpinfo(),可以看到sqlb的支持已被加入了....

4.php连接测试

sqlb只提供一个方法



PHP代码
$result =accelsqlb($query, $db_name, $db_type, $state,[$timeout])  



其中:
$query为要执行的sql语句
$db_name为要连接的数据库名
$db_type为数据库类型,此处为mysql
$state为执行完成状态码
$timeout为超时设置

state      : return value of the function :
                -2 : timeout occured
                -1 : sqlb error
                 0 : SQL error
                 1 : SQL query OK with resultset
                 2 : SQL query OK with empty resultset
                     ("No row selected")
                 3 : SQL query OK without resultset (DELETE, UPDATE,...)

所有返回结果可以通过查看$result获得,如果$state的值为1,则$result结果为:

array(
字段数n
n个字段名
第一条记录n个值
第二条记录n个值
..
)

其它返回方式请自行测试

jonyare2007-10-29 12:04 PM
看不懂也顶


查看完整版本: SQLB : SQL Load Balancer安装试用


Powered by Discuz! Archiver 6.1.0  © 2001-2006 Comsenz Inc.
Processed in 0.006003 second(s), 2 queries