참조
http://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=tipntech&wr_id=25928
http://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=tipntech&wr_id=36317
mysql+php 환경에서 db pool로 알려진 sqlrelay 를 설치하여 테스트 해보는게 이문서의 목적이다.
다운로드
rudiments : http://sourceforge.net/projects/rudiments/
sqlrelay : http://sourceforge.net/projects/sqlrelay/
현재 버젼 : rudiments-0.30.tar.gz, sqlrelay-0.38.tar.gz
다음 설치 환경은 각각 다를수 있기 때문에 주의 하시길..
또한 작업은 root 로 한다는 가정하에 적는다.
우선 /home/tmp 폴더에 rudiments-0.30.tar.gz, sqlrelay-0.38.tar.gz 두화일을 올려둔 다음..
1. rudiments 설치
sqlrelay 를 사용하기 위한 C 라이버리라고 생각하면 된다.
# tar xvfz rudiments-0.30.tar.gz
# cd rudiments-0.30
# ./configure
# make
# make install
/usr/local/firstworks 에 설치됨...
2. sqlrelay 설치
# tar xvfz sqlrelay-0.38.tar.gz
# cd sqlrelay-0.38
# ./configure --enable-small-code --enable-mysql-rpath --enable-php-rpath --with-php-ext-dir=/php확장모듈dir
# make
# make install
configure 중 --with-php-ext-dir 옵션이 필요한 이유는 sqlrelay 가 PHP의 확장모듈 형태로 설치하기 때문이다.
make install 후 php확장 모듈 dir 를 살펴보면 sql_relay.so 라는 모듈이 만들어진걸 확인할수 있다
3. sqlrelay 설정 및 시작
# cd /usr/local/firstworks/
# vi etc/sqlrelay.conf
=====================================================================================================
<?xml version="1.0"?>
<!DOCTYPE instances SYSTEM "sqlrelay.dtd">
<instances>
<instance id="mysqlrelay" port="9000" socket="/tmp/mysql_relay.socket" dbase="mysql" connections="3" maxconnections="5" maxqueuelength="0" growby="1" ttl="60" endofsession="commit" sessiontimeout="600" runasuser="nobody" runasgroup="nobody" cursors="5" authtier="listener" handoff="pass">
<users>
<user user="mysqlrelay" password="mysqlrelaypass"/>
</users>
<connections>
<connection connectionid="mysqlrelay" string="host:localhost;user=MysqlUser;password=MysqlUserPass;db=MysqlDB;port=3306;socket=/home/tmp/mysql.sock" metric="1"/>
</connections>
</instance>
</instances>
=====================================================================================================
:wq
sqlrelay.conf 설정화일 설명
instance id="mysqlrelay" 는 mysqlrelay 라는 id 로 sqlrelay로 접속하는것을 의미한다.
port="9000" 은 mysqlrelay 가 실행되는 port 이며 php에서 접속시에 이용된다.
socket="/tmp/mysql_relay.socket" 은 sqlrelay 의 socket 위치이다.
dbase="mysql" 는 DB명을 의미하며 사용할수 있는 DB는 sqlrelay.dtd 에 정의되어 있다
connections="3" 은 초기 연결갯수를 의미하며 sqlrelay 를 실행시키면 프로세서가 3개가 실행된다는걸의미
maxconnections="5" 는 최대 연결갯수를 의미한다.
user="mysqlrelay" 는 php가 sqlrelay 에접속할 userid를 의미한다.
password="mysqlrelaypass"는 php가 sqlrelay 에 접속할 userid 의 패스워드를 의미한다.
string="host:localhost;user=MysqlUser;password=MysqlUserPass;db=MysqlDB;port=3306;socket=/home/tmp/mysql.sock"
string 부분은 sqlrelay 가 mysql 에 접속하는 환경을 설정하는곳이다.
개인별로 환경이 다르기때문에 이부분에 주의 하기 바란다.
처음에 어려웠던 부분이 instance 와 connection 의 차이를 몰라 한참을 1시간동안 삽질을 했었다.
알고 보면 아무것도 아니겠지만 ... TT
sqlrelay.conf 화일에 mysql 접속관련 패스가 있으므로 chmod 로 권한을 조정하는걸 잊지말자..
위에서언급한 것 외에도 여러가지가 있지만 정확히 무엇을 의미하는지는 아직 잘모르겠다
하단에 언급한 html 문서를 보면서 앞으로 참고를 해야할 부분이다.
# vi ~/.bash_profile
PATH=$PATH:$HOME/bin:/usr/local/firstworks/bin 를 이와같이 수정한다.
# vi /usr/local/apache/conf/php.ini <== 각자 환경이 다를수 있다
만약 php.ini 화일의 위치를 모른다면.. phpinfo() 함수를 찍어보길 바란다.
php.ini 화일 하단에 "extension = sql_relay.so" 를 추가한후 저장한다
# sqlr-start -id mysqlrelay <== mysqlrelay instance id 를 실행시킨다. 참고로 instance id는 설정화일에서
여러개를 만들수 있다. sqlrely를 죽이려면 # sqlr-stop -id mysqlrelay 하면된다. # sqlr-stop 을 실행하면
여러개의 instance id 를 모두 죽이는 것이다.
# /usr/local/apache/bin/apachectl restart <== 아파치 재시작
이제 환경은 모두 구축된것이다.
4. php에서의 sqlrelay 접속
아래의 php 코드를 넣어서 테스트 하길바란다.
<?php
//dl("sql_relay.so");
$con = sqlrcon_alloc("localhost", 9000, "", "mysqlrelay", "mysqlrelaypass", 0, 1);
$cur = sqlrcur_alloc($con);
if(!sqlrcur_sendQuery($cur, "select * from test_t1")) {
echo sqlrcur_errorMessage($cur);
echo "\n";
}
sqlrcon_endSession($con);
for($row=0; $row<sqlrcur_rowCount($cur); $row++) {
for($col=0; $col<sqlrcur_colCount($cur); $col++) {
echo sqlrcur_getField($cur,$row,$col);
echo ",";
}
echo "\n";
}
sqlrcur_free($cur);
sqlrcon_free($con);
?>
이제 정상적으로 실행되는것을 볼수 있을것이다.
php api 관련된것은 sqlrelay 소스 dir 밑에 doc 를 보시면 html문서로 상세하게 나와있다.
출처 : http://blog.naver.com/donisio
http://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=tipntech&wr_id=25928
http://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=tipntech&wr_id=36317
mysql+php 환경에서 db pool로 알려진 sqlrelay 를 설치하여 테스트 해보는게 이문서의 목적이다.
다운로드
rudiments : http://sourceforge.net/projects/rudiments/
sqlrelay : http://sourceforge.net/projects/sqlrelay/
현재 버젼 : rudiments-0.30.tar.gz, sqlrelay-0.38.tar.gz
다음 설치 환경은 각각 다를수 있기 때문에 주의 하시길..
또한 작업은 root 로 한다는 가정하에 적는다.
우선 /home/tmp 폴더에 rudiments-0.30.tar.gz, sqlrelay-0.38.tar.gz 두화일을 올려둔 다음..
1. rudiments 설치
sqlrelay 를 사용하기 위한 C 라이버리라고 생각하면 된다.
# tar xvfz rudiments-0.30.tar.gz
# cd rudiments-0.30
# ./configure
# make
# make install
/usr/local/firstworks 에 설치됨...
2. sqlrelay 설치
# tar xvfz sqlrelay-0.38.tar.gz
# cd sqlrelay-0.38
# ./configure --enable-small-code --enable-mysql-rpath --enable-php-rpath --with-php-ext-dir=/php확장모듈dir
# make
# make install
configure 중 --with-php-ext-dir 옵션이 필요한 이유는 sqlrelay 가 PHP의 확장모듈 형태로 설치하기 때문이다.
make install 후 php확장 모듈 dir 를 살펴보면 sql_relay.so 라는 모듈이 만들어진걸 확인할수 있다
3. sqlrelay 설정 및 시작
# cd /usr/local/firstworks/
# vi etc/sqlrelay.conf
=====================================================================================================
<?xml version="1.0"?>
<!DOCTYPE instances SYSTEM "sqlrelay.dtd">
<instances>
<instance id="mysqlrelay" port="9000" socket="/tmp/mysql_relay.socket" dbase="mysql" connections="3" maxconnections="5" maxqueuelength="0" growby="1" ttl="60" endofsession="commit" sessiontimeout="600" runasuser="nobody" runasgroup="nobody" cursors="5" authtier="listener" handoff="pass">
<users>
<user user="mysqlrelay" password="mysqlrelaypass"/>
</users>
<connections>
<connection connectionid="mysqlrelay" string="host:localhost;user=MysqlUser;password=MysqlUserPass;db=MysqlDB;port=3306;socket=/home/tmp/mysql.sock" metric="1"/>
</connections>
</instance>
</instances>
=====================================================================================================
:wq
sqlrelay.conf 설정화일 설명
instance id="mysqlrelay" 는 mysqlrelay 라는 id 로 sqlrelay로 접속하는것을 의미한다.
port="9000" 은 mysqlrelay 가 실행되는 port 이며 php에서 접속시에 이용된다.
socket="/tmp/mysql_relay.socket" 은 sqlrelay 의 socket 위치이다.
dbase="mysql" 는 DB명을 의미하며 사용할수 있는 DB는 sqlrelay.dtd 에 정의되어 있다
connections="3" 은 초기 연결갯수를 의미하며 sqlrelay 를 실행시키면 프로세서가 3개가 실행된다는걸의미
maxconnections="5" 는 최대 연결갯수를 의미한다.
user="mysqlrelay" 는 php가 sqlrelay 에접속할 userid를 의미한다.
password="mysqlrelaypass"는 php가 sqlrelay 에 접속할 userid 의 패스워드를 의미한다.
string="host:localhost;user=MysqlUser;password=MysqlUserPass;db=MysqlDB;port=3306;socket=/home/tmp/mysql.sock"
string 부분은 sqlrelay 가 mysql 에 접속하는 환경을 설정하는곳이다.
개인별로 환경이 다르기때문에 이부분에 주의 하기 바란다.
처음에 어려웠던 부분이 instance 와 connection 의 차이를 몰라 한참을 1시간동안 삽질을 했었다.
알고 보면 아무것도 아니겠지만 ... TT
sqlrelay.conf 화일에 mysql 접속관련 패스가 있으므로 chmod 로 권한을 조정하는걸 잊지말자..
위에서언급한 것 외에도 여러가지가 있지만 정확히 무엇을 의미하는지는 아직 잘모르겠다
하단에 언급한 html 문서를 보면서 앞으로 참고를 해야할 부분이다.
# vi ~/.bash_profile
PATH=$PATH:$HOME/bin:/usr/local/firstworks/bin 를 이와같이 수정한다.
# vi /usr/local/apache/conf/php.ini <== 각자 환경이 다를수 있다
만약 php.ini 화일의 위치를 모른다면.. phpinfo() 함수를 찍어보길 바란다.
php.ini 화일 하단에 "extension = sql_relay.so" 를 추가한후 저장한다
# sqlr-start -id mysqlrelay <== mysqlrelay instance id 를 실행시킨다. 참고로 instance id는 설정화일에서
여러개를 만들수 있다. sqlrely를 죽이려면 # sqlr-stop -id mysqlrelay 하면된다. # sqlr-stop 을 실행하면
여러개의 instance id 를 모두 죽이는 것이다.
# /usr/local/apache/bin/apachectl restart <== 아파치 재시작
이제 환경은 모두 구축된것이다.
4. php에서의 sqlrelay 접속
아래의 php 코드를 넣어서 테스트 하길바란다.
<?php
//dl("sql_relay.so");
$con = sqlrcon_alloc("localhost", 9000, "", "mysqlrelay", "mysqlrelaypass", 0, 1);
$cur = sqlrcur_alloc($con);
if(!sqlrcur_sendQuery($cur, "select * from test_t1")) {
echo sqlrcur_errorMessage($cur);
echo "\n";
}
sqlrcon_endSession($con);
for($row=0; $row<sqlrcur_rowCount($cur); $row++) {
for($col=0; $col<sqlrcur_colCount($cur); $col++) {
echo sqlrcur_getField($cur,$row,$col);
echo ",";
}
echo "\n";
}
sqlrcur_free($cur);
sqlrcon_free($con);
?>
이제 정상적으로 실행되는것을 볼수 있을것이다.
php api 관련된것은 sqlrelay 소스 dir 밑에 doc 를 보시면 html문서로 상세하게 나와있다.
출처 : http://blog.naver.com/donisio
728x90
댓글