차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판이전 판
다음 판
이전 판
tech:php_thread_safe [2018/12/17 15:22] – [Thread Safe?] V_Ltech:php_thread_safe [2018/12/17 15:45] (현재) – [Multi thread VS Multi process] V_L
줄 2: 줄 2:
 ======  Thread Safe? ====== ======  Thread Safe? ======
  
-**Thread Safe 와 Non Thread Safe**+웹서버는  HTTP 다중접속이 이루어지므로 당연히 여러 작업을 동시에 처리할 수 있어야 한다. 
  
-우선 윈도우용 PHP는 항상 Thread Safe 버전으로 나왔었다. +=====Multi thread VS Multi process=====
-이유는 윈도우가 **멀티쓰레드** 방식인데 PHP 는 멀티프로세스 방식으로 개발 되었기 때문이다. +
-참고로 [[tech:linux|리눅스]]나 유닉스는 원래 **멀티프로세스** 방식이었기에 문제가 되지 않았다.+
  
-PHP를 IIS와 연동하기 위해 CGI 또는 ISAPI 방식로 연동을 한다. +멀티쓰레드 방식은 여러 요구를 하나의 프세스가 시간을 쪼개어 처리하는 방법고, 멀티 프로세스는 요구마다 프세스를 만들고 일이 끝나면 없애는 방식이다. (( 이에대한 깊은 이해는 [[https://www.slideshare.net/ssuser800974/ss-62605746|참고]]))
-그런데 PHP와 관련된 모듈들이 대부분 멀티프로세스 방식으로 개발 되었기 때문에 +
-멀티쓰레드 방식으로 개발된 ISAPI 로 연동하였을 경우 서버가 다운되는 현상이 나타났다.+
  
-그래서 안정인 방법으로 CGI 방식을 사용하긴 하지만 이 것 역시 퍼포먼스 측면에서 너무 느게 문제가 되었다. +기본적으로 윈도우의 다중처리방식은 **멀티 쓰레드** 방식인데  
-이 퍼포먼스 문제를 개선한 것이 Non Thread Safe 버전이라고 생각하면 되겠…^^+[[tech:linux|눅스]]나 유닉스는 **멀티 프로세** 방식이다.
  
-정리를 자면 +원래 PHP와 관련된 모듈들이 대부분 멀티프로세스 방식으로 개발 되었기 때문에 
 +멀티쓰레드 방식으로 개발된 ISAPI 로 윈도우서버 IIS와 연동기위해 Thread Safe 버전이 개발되었다. 
  
-=====Non Thread Safe=====+  
 +하지만 이 방법은 느리다는 문제가 있었다. 
 +그래서 Fast-CGI 방식으로 연결하여 퍼포먼스를 해결한 것이 Non Thread Safe 버전이다.
  
-    - 다중 스레드 +정리를 하자면 
-    - FAST CGI 호환을 위해+
 =====Thread Safe===== =====Thread Safe=====
      - 단일 스레드      - 단일 스레드
      - SAPI와 PHP 호환을 위해      - SAPI와 PHP 호환을 위해
 +=====Non Thread Safe=====
 +
 +    - 다중 스레드
 +    - FAST CGI 호환을 위해
 +
  
 =====결론===== =====결론=====