PHP Thread Safe, Non Thread Safe 방식의 차이

Wookoa 2024. 2. 1.

Thread Safe/Non Thread Safe 차이
Thread Safe/Non Thread Safe 차이

머리말

  PHP 웹 언어는 Thread 방식에 따라 크게 Multi-Thread 및 Multi-Process 두 가지 빌드 버전이 제공된다. PHP는 기본적으로 Multi-Process를 지원했었다. 그렇기 때문에 동일한 Multi-Process 방식인 리눅스 계열은 큰 문제가 되지 않았지만, Multi-Thread 방식인 윈도우 계열에서는 서버가 다운되거나 시스템 퍼포먼스가 좋지 않은 경우가 종종 리포트되었다. 이러한 이유로 Multi Thread 방식을 지원하기 위해서 Thread Safe, Non Thread Safe 나뉘어서 지원하게 되었다. 본 포스팅은 PHP 웹 언어에서 Thread Safe, Non Thread Safe 빌드 버전의 차이점에 대해서 간략히 소개하도록 한다.

php: Hypertext Preprocessor
php: Hypertext Preprocessor

Thread Safe, Non Thread Safe 차이점

  PHP를 IIS(웹서버)와 연동하기 위해서 CGI 또는 ISAPI 방식으로 연동을 한다. 하지만 PHP와 관련된 모듈은 Multi-Process 방식으로 개발되기 때문에, Multi-Thread 방식으로 개발된 ISAPI로 연동했을 경우에는 간혹 서버가 다운되는 현상이 발생했다. 그래서 IIS와 연동하기 위한 다른 방법인 CGI 방식을 사용하지만 시스템 퍼포먼스가 좋지 않았다. 위와 같이 IIS와 연동하기 위해 CGI 방식을 채택했지만 퍼포먼스를 향상하기 위해 제공한 것이 Non Thread Safe 빌드 버전이다. 이러한 내용을 아래와 같이 정리할 수 있다.

Windows + ISAPI: Thread Safe version

Windows + CGI or Fast CGI: Non Thread Safe version

Windows + Apache MPM worker: Thread Safe version

Windows + Apache MPM prefork: Non Thread Safe version

꼬리말

  PHP 공식 홈페이지의 설명에 따르면, Thread Safe 버전의 경우 다중 스레드가 가능한 빌드 버전으로써 멀티 스레드를 웹 서버에 로드할 경우에 사용해야 된다. Non Thread Safe 버전의 경우 단일 스레드 전용 빌드 버전으로써 멀티 스레드를 사용하지 않고 FastCGI 프로토콜을 통한 웹서버를 사용할 경우에 사용해야 된다. 결론적으로, 어떤 빌드 버전을 사용할지 판단은 각 웹서버에서 사용하는 모듈이나 프로토콜에 따라서 선택해야 된다. PHP 웹 언어의 스레드 지원 방식에 따라, Thread Safe/Non Thread Safe 빌드 버전에 대해 소개한 본 포스팅은 이로서 마무리를 짓도록 한다.

인기있는 글

소중한 댓글 (0)