喜悦国际村 
» 游客:  注册 | 登录 | 搜索 | 统计 | 喜悦证交所 | 帮助

RSS 订阅当前论坛  

上一主题 下一主题
     
标题: SQLB : SQL Load Balancer安装试用  
  本主题由 sadly 于 2007-10-25 06:09 PM 审核通过 
 
sadly (sadly)
管理员
Rank: 9Rank: 9Rank: 9
管理员


UID 1
精华 4
积分 2008
帖子 2012
金钱 1534 喜悦币
威望 40
人脉 434
阅读权限 200
注册 1970-1-1
来自 北京 三元桥
状态 离线
SQLB : SQL Load Balancer安装试用

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

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

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

1.下载

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

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个值
..
)

其它返回方式请自行测试




以PHP在中国的繁荣发展为己任
QQ:824008 MSN:sadly@phpx.com
2007-10-25 06:08 PM#1
查看资料  访问主页  Blog  发短消息  QQ  ICQ 状态  顶部
 
jonyare
中级会员
Rank: 3Rank: 3


UID 92705
精华 0
积分 406
帖子 365
金钱 406 喜悦币
威望 0
人脉 0
阅读权限 30
注册 2007-5-8
来自 清华王牌计算机系
状态 离线
[推荐阅读] 请问大家在修改升级一些国外开源软件的时候有什么好的方法
看不懂也顶



务以善小而为之,务以恶小而不为村
2007-10-29 08:04 PM#2
查看资料  Blog  发短消息  顶部
     


  可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题 | 开通个人空间  


 


Powered by Discuz! 6.1.0  © 2001-2010 Comsenz Inc.
Processed in 0.024972 second(s), 7 queries

(冀ICP备05009913号) 管理员:sadly 邮箱/MSN: sadly@phpx.com QQ:824008(长隐) 清除 Cookies - - Archiver - WAP