웹마스터 팁

TS : Thread Safe ( 멀티 쓰레드 모드 )
NTS : Non Thread Safe ( 멀티 프로세스 모드 )

PHP 엔 위 두가지 모드?가 존재하는데,
확장모듈의 개발환경과 운용환경이 동일한 모드일 경우에만 정상적으로 로드가 되며,
개발은 TS 환경에서 진행하고 해당 모듈을 NTS 모드인 운용환경에서 로드 하려고 하면
서로다른 모드에서 개발이돼어 로드되지 않는다는 에러문구를 출력하고 로드가 되지 않습니다.
( 에러 문구. )
PHP error
PHP Warning:  PHP Startup: "module_name": Unable to initialize module
Module compiled with build ID=API20100525,NTS
PHP    compiled with build ID=API20100525,TS


5.2.13 버전 이하에서는 TS / NTS 모드에 맞게 소스가 따로 존재 해서 자신이 사용할 모드에 맞는 소스를 다운 받아서 설치하면 됐지만 그 이후 버전에서는 두종류의 모드가 통합된 소스가 나오고 있어서 사용자가 직접 설정을 해줘야 합니다.

TS / NTS 모드의 설정은 PHP 를 설치 혹은 컴파일 할때 변경이 되지 않고,
아파치를 설치할때 아파치가 어떤 모드로 설치되느냐에 따라 모드가 정해집니다.
( 혹시 아파치와 관련 없이 PHP 만의 모드를 변경 가능한 방법이 있다면 댓글 부탁드려요. )

아파치에도 PHP 와 같이 TS / NTS 와 같은 설정이 있습니다.
MPM 에 있는 prefork 와 worker 입니다.
TS = worker / NTS = prefork 라고 보시면 됩니다.

prefork(NTS) 같은 경우엔 아파치2 에서 default 옵션이므로 NTS 모드를 사용하고자 하신다면
따로 옵션을 주거나 하실 필요 없이 그대로 설치 하시면 되며,
TS 모드를 사용하고자 하신다면 아파치를 configure 를 할때
--with-mpm=worker  라는 옵션을 주고 configure 를 진행하신다음
make; make install 명령을 통해 설치하시면 됩니다.

위와 같이 아파치 설치를 끝내고 php 를 컴파일해서 설치 한뒤에
php -vi  혹은 php -vi > MyInfo.txt  명령을 통해 확인 해보시면

NTS. ( prefork )
Zend Extension Build => API220100525, NTS
PHP Extension Build => API20100525, NTS

TS. ( worker )
Zend Extension Build => API220100525, TS
PHP Extension Build => API20100525, TS

위와같이 TS 인지 NTS 인지 나오게 됩니다.