아파치 웹서버의 동작 원리
- 클라이언트가 접속시 하나의 프로세스를 만들고 그안에서 하나의 쓰레드를 만들어 응답
- 쓰레드 단위로 업무를 처리
PHP의 동작 원리
- PHP는 아파치라는 웹서버프로그램과 연동하여 동작
- 요청처리는 사용자가 문서를 요구할때 APACHE는 HTML문서를 처리하고 php엔진은 php문서를 처리한다.
- 웹 업무를 나누어 처리한다.
- PHP (PHP Hypertext Preprocessor) Server-side HTML embeded 스크립트 언어
- PHP는 서버에서 실행되며 HTML을 포함하는 스크립트 언어
- HTML을 포함하고 있기 때문에 HTML 내용을 PHP확장자로 저장하여도 아무 지장 없이 사용할 수 있다.
PHP는 CGI(Common Gateway Interface)인가?
- PHP는 완전한 CGI는 아니지만 아니라고 할수 도 없다.
CGI는?
- CGI는 보통 웹서버와 분리되어 있는 프로그램
- 일반적으로 웹서버로 요청이 들어오면 CGI프로그램을 실행하여 하나의 프로세스를 생성하고 그 처리결과를 웹서버로 전송한후 프로세스가 종료되는 형식
- 100개의 요청이 들어오면 CGI프로세스가 100개 생성되어 100개가 소멸
PHP는?
- CGI와는 달리 아파치 웹서버에 모듈로 장착되어 있다.(웹서버와 가까이 붙어있음)
- 따라서 매회 실행시마다 프로세스가 생성되는 CGI와 달리 하나의 프로세스에 여러개의 쓰레드를 생성하여 처리
프로세스 vs 쓰레드
- 프로세스는 각각의 별도로 시스템 자원을 소비
- 1개의 프로세스가 메모리 1메가바이트를 소비한다면 100개의 경우 100메가 바이트 메모리를 소비
- 그러나 쓰레드는 서로 시스템자원 공유
- 따라서 100개라고 해서 100메가 바이트를 소비하는거이 아니라 그보다 훨씬적은 메모리를 소비함
그래서 프로세스 방식인 CGI보다 쓰레드 방식인 PHP가 성능이 우수합니다.
'프로그래밍 > PHP' 카테고리의 다른 글
[PHP] MeCab(한글 형태소 분석기)설치 및 PHP 바인딩 (0) | 2013.12.01 |
---|---|
[PHP] 에러 발생시 내용 화면에 표시 설정 하기 (0) | 2012.07.24 |
[PHP] define(), defined() 차이 (0) | 2012.06.27 |
[PHP] isset, empty, is_null의 상관 관계 (0) | 2012.06.07 |
[PHP] mysql_query() db세션 유지 (0) | 2012.05.31 |