차이

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

차이 보기로 링크

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