PHP for Windows
여기서 유독 PHP for Windows 버전에서는 Thread Safe, Non Thread Safe 로 나뉘는데 두 개는 어떠한 차이가 있는지 잠깐 살펴보기로 하자. 스레드는 프로세스 내부에서 동작하는 개별 로직이라고 생각하자. 사실 이건 PHP for Windows 의 사이드에서 친절하게 일부 설명이 들어있다.
NTS(Non Thread Safe)
PHP 는 기본적으로 멀티 프로세스 방식으로 처리하는데, PHP 를 CGI 방식으로 사용하게되면 요청마다 프로세스를 생성하는 방식을 취하게 된다. FastCGI 를 사용하면 PHP-FPM(PHP FastCGI Process Menager)가 어련히 알아서 요청을 처리해주므로 괜찮긴 하지만. 어찌되었든 일단 다중 스레드를 사용하는 상황이 아니라면 Thread Safe 를 사용할 필요가 없이 Non Thread Safe 를 사용하면 될 것이다. 이 버전을 사용할 때는 싱글 스레드 일경우다.
NTS refers to single thread only builds.
Windows + IIS(FastCGI, CGI)를 사용하면 Windows 에서도 NTS 버전을 사용하여 구동할 수 있다.
If you are using PHP as FastCGI with IIS you should use the Non-Thread Safe (NTS) versions of PHP.
TS(Thread Safe)
Windows + IIS(SAPI) 라면 TS 버전을 사용하라고 되어있다. 사실 난 IIS 서버를 써본 적이 없기 때문에 잘은 모르겠지만. Apache 를 사용할 때도 다중 스레드를 사용하게 된다면 이 버전을 사용하자.
With Apache, using the apache2handler SAPI, you have to use the Thread Safe (TS) versions of PHP. ...TS binaries involves interaction with a multithreaded SAPI and PHP loaded as a module into a web server.
SAPI, 그리고 PHP 가 웹서버 내부에서 모듈로써 로드된다면 이 버전을 사용하라고 되어있으니 참고하자.
더 읽을거리
https://www.inflearn.com/course/php7-reboot