PHP數(shù)據(jù)庫連接池SQL Relay安裝使用
SQL Relay按照其官網(wǎng)http://sqlrelay.sourceforge.net/index.html上所說是:A powerful database connection management solution.
翻譯為中文也就是說SQL Relay是一個開源的數(shù)據(jù)庫池連接代理服務(wù)器。
目前SQL Relay支持的數(shù)據(jù)庫很多:
SQL Relay supports Oracle, MySQL, PostgreSQL, SAP/Sybase, IBM DB2, Informix, Firebird and SQLite databases directly, using the native client API's for those databases.
Support is provided for Microsoft SQL Server via the FreeTDS API.
支持的API也是非常豐富的
Guides:?C++,?C,?C#,?Perl,?PHP,?Python,?Ruby,?Java,?TCL,?Erlang,?node.js?
References:?C++,?C,?C#,?Perl,?PHP,?Python,?Ruby,?Java,?TCL,?node.js,
本人講述怎么在Linux+PHP+FreeDTS環(huán)境使用連接池,其實(shí)PHP->SQL Relay->FreeDTS->數(shù)據(jù)庫 這樣的架構(gòu)。
下面說安裝使用
1.先安裝rudiments
建議盡量安裝新版,舊版可能會報錯需要解決。
# wget http://sourceforge.net/projects/rudiments/files/rudiments/0.28.2/rudiments-0.28.2.tar.gz/download
# tar xvzf rudiments-0.54.tar.gz
# cd rudiments-0.54
# ./configure --prefix=/usr/local/rudiments
# make && make install
2.再安裝sqlrelay
# wget https://sourceforge.net/projects/sqlrelay/files/sqlrelay/0.64/sqlrelay-0.64.tar.gz/download
# tar vxzf sqlrelay-0.64.tar.gz
# cd sqlrelay-0.64
# ./configure --prefix=/usr/local/sqlrelay --with-rudiments-prefix=/usr/local/rudiments ?--with-freetds-prefix=/usr/local/freetds --with-php-prefix=/usr/local/php
# make && make install
3.修改php配置文件
# vim /usr/local/php/lib/php.ini
增加擴(kuò)展
extension?="sql_relay.so"
注意:需要確認(rèn)phpinfo
4.修改freeDTS配置
關(guān)于freeDTS的安裝參考此文:http://blog.csdn.net/unix21/article/details/47449901
修改FreeTDS的配置文件freetds.conf
# vim /usr/local/freetds/etc/freetds.conf
加入以下內(nèi)容
[msdetest] host?=?192.168.1.1 port?=1433 tds?version?=?7.0 client?charset?=?UTF-8
不然會中文亂碼,需要對應(yīng)的編碼類型GB2312等等。
5.修改SQL Relay的配置文件
# cd /usr/local/sqlrelay/etc/
# cp sqlrelay.conf.example ?sqlrelay.conf
# vim sqlrelay.conf
整個配置非常好理解
6.啟動SQL Replay
# export PATH=$PATH:/usr/local/sqlrelay/bin
啟動:
# sqlr-start -id msde
上圖是成功啟動,如果配置錯誤會提示數(shù)據(jù)庫連不上之類的。
SQL工具
# sqlrsh -id msde
7.php使用連接池
<?php $con=sqlrcon_alloc("msdetest",9001,"/tmp/msdetest.socket","admin","admin",0,1); $cur=sqlrcur_alloc($con); sqlrcur_sendQuery($cur,"SELECT?top?10?*?FROM?test?order?by?id?desc"); for?($row=0;?$row<sqlrcur_rowCount($cur);?$row++)?{ for?($col=0;?$col
前端網(wǎng)頁從連接池取出數(shù)據(jù)
SQL Relay的PHP函數(shù)API
http://sqlrelay.sourceforge.net/sqlrelay/programming/php.html
使用了連接池之后從數(shù)據(jù)庫那邊可以看出連接池是保持連接的,我們設(shè)定的最小連接池是10個。