PHP 함수의 mysql 데이터베이스 확장 함수의 고찰

 

PHP 함수의 mysql 데이터베이스 확장 함수의 고찰

logo_php

PHP에서 지원하는 mysql 함수

  • mysql
  • mysqli
  • pdo-mysql

 

 

습관

난 몇년동안 리눅스상에서 APM을 설치할때

  • mysql을 컴파일해서 설치하고
  • php설치시 ”–with-mysql=/usr/local/mysql” 등의 옵션을 사용했다.
--with-mysql=/usr/local/mysql
--with-pdo-mysql=/usr/local/mysql (필요시 추가)

형태로 설치한뒤 추가로 mysqli가 필요한 경우 별도의 모듈형태로 mysqli 를 설치해서 사용했다..

특별히 큰 이유가 있었던것은 아니고, 그냥 mysql3 + php4.0 시절부터 그렇게 해왔기 때문에 의례 그렇게 했다는게 맞다.

 

새로운것

헌데 PHP5.3 부터 변경된점중.. mysqlnd 라는것이 있다.

출처 : http://php.net/manual/en/book.mysqlnd.php

위에서 설명한 mysql의 3가지 지원함수의 사용을 위해서

  • mysql 라이브러리 (컴파일이든 yum, apt 를 이용한 클라이언트/라이브러리 설치)
  • php컴파일시 libmysqlclient 를 사용

해야 했던 전통적인 방식대신

mysql Native Driver 라는 새로운 방식을 php-5.3 부터 지원하게 되었다고… (솔직히 몰랐다;;;;)

 

  • 라이센스 문제(라기 보다는 주체랄까..) 해결
  • libmysqlclient 라이브러리가 더이상 필요 없음
  • 같은 얘기지만 내장되어있는 기능을 활성화 시키는 것이기 때문에 설치가 쉽다.
  • PHP의 메모리 관리 시스템의 사용하기 때문에 성능개선(이 있을수 있다..)

라는 장점이 있다…

소스컴파일의 경우 설치되는 프로그램(컴파일된 바이너리 파일을 통칭…)이 설치당시 참조했던 라이브러리에 대한 절대적인 의존성을 갖게 되는데

이렇게 자체드라이버를 사용하게 되면, 적어도 libmysqlclient 에 대해서는 자유로워지게 되는것을 의미한다.

이것이 무엇을 의미하냐고???

바로 mysql5.1 + php5.3(이상)을 쓰다가..

mysql5.5 또는 mariadb10.0 으로 변경을 하더라도 PHP를 재컴파일할 필요가 없게 된다는것!!!!

이리저리 이점이 있기 때문에 앞으로는 mysqlnd 를 사용하기로 전격 결정했다.

 

설치법

기존 mysql, mysqli, pdo-mysql 에 대한 정의 부분은 모두 무시하고
아래 컴파일 옵션을 사용하면된다.

--enable-mysqlnd \
--with-mysql=mysqlnd \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \

 

phpinfo

mysqlnd

mysqlnd enabled
Version mysqlnd 5.0.11-dev – 20120503 – $Id: 3c688b6bbc30d36af3ac34fdd4b7b5b787fe5555 $
Compression supported
core SSL supported
extended SSL supported
Command buffer size 4096
Read buffer size 32768
Read timeout 31536000
Collecting statistics Yes
Collecting memory statistics Yes
Tracing n/a
Loaded plugins mysqlnd,debug_trace,auth_plugin_mysql_native_password,
auth_plugin_mysql_clear_password,auth_plugin_sha256_password
API Extensions mysqli,pdo_mysql,mysql

mysql

MySQL Support enabled
Active Persistent Links 0
Active Links 0
Client API version mysqlnd 5.0.11-dev – 20120503 – $Id: 3c688b6bbc30d36af3ac34fdd4b7b5b787fe5555 $

mysqli

MysqlI Support enabled
Client API library version mysqlnd 5.0.11-dev – 20120503 – $Id: 3c688b6bbc30d36af3ac34fdd4b7b5b787fe5555 $
Active Persistent Links 0
Inactive Persistent Links 0
Active Links 0

pdo_mysql

PDO Driver for MySQL enabled
Client API version mysqlnd 5.0.11-dev – 20120503 – $Id: 3c688b6bbc30d36af3ac34fdd4b7b5b787fe5555 $

 

이런식으로다가 mysqlnd 가 활성화된 것을 볼 수 있다.

About KENNETH 19694 Articles
지락문화예술공작단

Be the first to comment

Leave a Reply

Your email address will not be published.


*


이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.