[PHP] Windows용 PHP 설치 시 Non-Thread Safe 와 Thread Safe

VNote 2022.11.22 10:28:51

PHP는 기본적으로 Multi-process 방식만을 지원했었다.

이는 기존 리눅스/유닉스 계열 역시 Multi-process 방식이었기 때문이었는데 

원래 Multi-thread 방식인 윈도우 계열에 이 TS 버전을 빌드하게 되면서 문제가 생기게 되었다.

 

PHP를 윈도우 웹서버인 IIS와 연동하기 위해서는 CGI(or FastCGI) 또는 ISAPI(Internet Server API) 방식으로 연동을 해야 하는데,

기존까지 PHP와 관련된 모듈들의 대부분이 Multi-process 방식으로 개발되었기 때문에 Multi-thread 방식으로 개발된 ISAPI로 연동하였을 경우 

서버가 다운되는 현상이 일어나게 된 것이다.

 

그래서 안정적인 방법으로 CGI 방식으로 변경하여 사용했으나 퍼포먼스가 너무 느린게 문제가 되었고 

이 느린 시스템 퍼포먼스를 개선하기 위해 나온 버전이 바로 Non-Thread Safe(이하 NTS) 버전이라고 한다.

 

다운로드 사이트 옆의 설명을 보면, 

 

TS 버전의 경우다중 스레드 가능 빌드로서 멀티 스레드 SAPI(Server API)와 PHP를 웹서버에 로드할 경우에는 TS 바이너리를 사용해야 한다고 한다.

NTS 버전의 경우단일 스레드 전용 빌드로서 멀티 스레딩을 사용하지 않고 FastCGI 프로토콜을 통한 웹서버를 사용할 경우 NTS 바이너리를 사용해한다고 한다.