Action disabled: source

Thread Safe?

웹서버는 HTTP 다중접속이 이루어지므로 당연히 여러 작업을 동시에 처리할 수 있어야 한다.

Multi thread VS Multi process

멀티쓰레드 방식은 여러 요구를 하나의 프로세스가 시간을 쪼개어 처리하는 방법이고, 멀티 프로세스는 요구마다 프로세스를 만들고 일이 끝나면 없애는 방식이다. 1)

기본적으로 윈도우의 다중처리방식은 멀티 쓰레드 방식인데 리눅스나 유닉스는 멀티 프로세스 방식이다.

원래 PHP와 관련된 모듈들이 대부분 멀티프로세스 방식으로 개발 되었기 때문에 멀티쓰레드 방식으로 개발된 ISAPI 로 윈도우서버 IIS와 연동하기위해 Thread Safe 버전이 개발되었다.

하지만 이 방법은 느리다는 문제가 있었다. 그래서 Fast-CGI 방식으로 연결하여 퍼포먼스를 해결한 것이 Non Thread Safe 버전이다.

정리를 하자면

Thread Safe

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

Non Thread Safe

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

결론

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

  • 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 버전
1)
이에대한 깊은 이해는 참고

역링크