문서의 이전 판입니다!


Thread Safe?

Thread Safe 와 Non Thread Safe

우선 윈도우용 PHP는 항상 Thread Safe 버전으로 나왔었다. 이유는 윈도우가 멀티쓰레드 방식인데 PHP 는 멀티프로세스 방식으로 개발 되었기 때문이다. 참고로 리눅스나 유닉스는 원래 멀티프로세스 방식이었기에 문제가 되지 않았다.

PHP를 IIS와 연동하기 위해 CGI 또는 ISAPI 방식으로 연동을 한다. 그런데 PHP와 관련된 모듈들이 대부분 멀티프로세스 방식으로 개발 되었기 때문에 멀티쓰레드 방식으로 개발된 ISAPI 로 연동하였을 경우 서버가 다운되는 현상이 나타났다.

그래서 안정적인 방법으로 CGI 방식을 사용하긴 하지만 이 것 역시 퍼포먼스 측면에서 너무 느리다는게 문제가 되었다. 이 퍼포먼스 문제를 개선한 것이 Non Thread Safe 버전이라고 생각하면 되겠다…^^

정리를 하자면

NTS는

  1. 다중 스레드
  2. FAST CGI 호환을 위해

TS는

  1. 단일 스레드
  2. SAPI와 PHP 호환을 위해

결론적으로 아래와 같이 설치하면 된다.

  • Windows + IIS(ISAPI) –> Thread Safe 버전
  • Windows + IIS(CGI or FastCGI) –> Non Thread Safe 버전
  • Windows + Apache(MPM worker) –> Thread Safe 버전
  • Windows + Apache(MPM prefork) –> Non Thread Safe 버전

역링크