프로그래밍 언어/PHP

PHP: Thread Safe vs Non Thread Safe

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

https://www.inflearn.com/course/php7-oop

PHP 카테고리 목차 및 문서 정리

2020년, PHP 언어가 가지는 의미

https://www.php.net/manual/en/