이번 프로젝트를 하면서 기존 MSSQL의 데이터들을 mysql로 옴겨와야하는 상황이 생겼다ㅋ
그래서 이것 저것해보다 알게된것 몇자 적어보려.. ㅋㅋ
일단 php에서 원격의 mssql데이터를 받아오려면 freetds란것을 설치하여야 한다.
odbc 를 이용한 방법도 있고 다른거( 잘 모르는거라..;; )도 있지만
FREETDS를 쓰면 좋은점
1. 속도가 빠르다.
2. 윈도우쪽은 전혀 건들지 않아도 된다. (리퀘스트브로커 같은거 안깔아두 된다)
3. php 에서 top 이라든가 distinct 등의 구문이 먹지 않는데 freetds 는 아무 문제가 없다.
4. 예전엔 한글 지원이 되지 않았던 문제점이 있었으나, 그 문제 또한 해결되었다.
이런 이유로 FREETDS를 많이 쓴다고 합니다ㅋ
일단 설치법부터..
1. www.freetds.org 에서 최신 버전을 다운받는다.
freetds-0.63.tar
2. /usr/local/ 하단에 압축을 풀고 설치한다.
(전 /usr/local/freetds-0.63 의 디렉토리명을 /usr/local/freetds 로 변경했는데, 보기 쉽게 할려는 것이지 설치에 반드시 필요한 사항은 아닙니다.)
[code]# cd freetds
#./configure --with-tdsver=7.0 --enable-msdblib --enable-dbmfix --with-gnu-ld --enable-shared --enable-static
# make
# make install [/code]
3./usr/local/freetds/freetds.conf 에 연결할 ms-sql 에 대한 환경 설정을 확인한다.
[MyServer2k]
host = ntmachine.domain.com
port = 1433
tds version = 4.2
위 내용을 확인 후 host 정보를 변경합니다.
저같은 경우는 cms서버에 접속해야하기 떄문에
host = ***.***.***.**로 변경했습니다.
tds version = 4.2 로 되어 있는것을 꼭 확인하세요.
위 설치과정이 끝나면 php를 재컴파일해서 설치하여야 합니다ㅋ
아파치 설치할때 동적모듈로 설치했으면 php만 다시 컴파일하면 되지만 그렇지 않을떄는 흠.. 알아서ㅎㅎ
암튼 php를 재 컴파일 할때 옵션에
[code]
--with-sybase=/usr/local/freetds \
--with-mssql=/usr/local/freetds \
[/code]
위 옵션을 주면 php에서 mssql_connect 등을 슬수 있습니다.
(--with-sybase=/usr/local/freetds \ <-- 이건 필요없을수도...)
그리고 아파치 재시작후
[code]
$Conn = mssql_connect ( "MyServer2k", "username", "password");
mssql_select_db('db_name', $conn);
[/code]
위와 같이 연결하시면 됩니다.
주의 할것은 호스트이름을 freetds.conf 에서 지정한 이름으로 해야합니다.
위의 예에서는 "MyServer2k"가 되겠죠 ㅋ
그리고 한가지 더..
원격mssql에서 데이터를 받아오다 보면 특정필드의 크기가 커서 중간에 잘리는경우가 있습니다. 하루동안 삽질을 한 결과 ㅋ
이럴경우에는 php.ini파일을 열어서
[code]
; Valid range 0 - 2147483647. Default = 4096.
mssql.textlimit = 4096 //-> 이부분을 mssql.textlimit = 지정크기
; Valid range 0 - 2147483647. Default = 4096.
mssql.textsize = 4096 //-> 이부분을 mssql.textsize = 지정크기
[/code]
위와 같이 바꾸시면 해결됩니다.
''.' Programs > PHP' 카테고리의 다른 글
[PHP] 쿠키 설정. (0) | 2012.07.03 |
---|---|
[PHP] 배열 stdclass <-> array 변환 (1) | 2012.07.02 |
[PHP] 배열 함수 정리. (0) | 2012.05.10 |
[PHP] 배열함수 array_unique() - 중복된 배열값 제거. (0) | 2012.05.02 |
[PHP] 클립보드 (0) | 2012.04.09 |