PHP를 지원하는 방식은 크게 Multi-Thread 및 Multi-Process 두가지로 나뉜다. PHP는 기본적으로 Multi-Process를 지원했다. 그렇기 때문에 동일한 Multi-Process 방식인 리눅스 계열은 큰 문제가 되지 않았다. 하지만 Multi-Thread 방식인 윈도우 계열에서는 서버가 다운되거나 시스템 퍼포먼스가 좋지 않은 경우가 리포트 되었다. 그렇기 때문에 멀티 쓰레드 방식을 지원하기 위해서 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

 

참조: http://cafe.naver.com/phpcafe.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=7753

 

 

Private comment