PHP 개요 (웹 시스템, CGI, WAS 원리)
by youngjun._.
PHP개요
📚 목차
- PHP개요
- 📚 목차
- PHP(PHP: Hypertext Preprocessor)
- ✔️ PHP와 같은 서버 사이드 언어의 필요성
- ✔️ 단점은?
- ✔️ PHP 동작 원리
- 웹 시스템(Web System)
- 클라이언트 사이드와 서버 사이드
- ✔️ 클라이언트 사이드(client-side)
- ✔️ 서버 사이드(server-side)
- 정적 페이지 VS. 동적 페이지
- CGI 개념
- 웹 애플리케이션 서버(WAS)
PHP(PHP: Hypertext Preprocessor)
Personal Home Page Tools → PHP:Hypertext Preprocessor 의미 변화
- Hypertext는 문서와 문서가 링크로 연결 (만드는 언어 : HTML)
- C언어를 기반으로 작성됨
PHP는 서버 측에서 실행되는 프로그래밍 언어
- 주로 HTML 코드를 프로그래밍적으로 생성(동적으로 빠르게 HTML 문서 작성가능)
- 데이터베이스와 상호작용 & 데이터 저장 & 표현
- 웹 프로그래밍을 위한 높은 생산성을 제공하는 언어
적용 사례
- 서버를 직접 설치해서 운영할 수 있는 설치형 웹 에플리케이션
- ex) 제로보드, 텍스트큐브, 워드프래스, PHPBB 등
PHP와 같은 서버 사이드 언어의 필요성
✔️- 처음 웹 동작은 Client가 요청하면 Server(PC)에 저장된 정적인 file(HTML)을 Client(웹 브라우저)에 보여주는 방식(아래 그림)
- 인터넷이 확장 됨에 따라 정적인 file형태의 HTML은 한계가 있다고 판단
- 새로운 서버 모델이 필요함
- 생산성이 높은 PHP언어 고안
- 서버에서 처리해주기 위해 CGI(Common Gateway Interface)를 도입
- CGI 통신규약을 통해 서버는 요청받은 PHP를 PHP engine으로 처리할 수 있도록 설계
- 웹브라우저가 응답을 받을 때는 HTML로 받기 때문에 PHP의 존재는 알 수 없고 필요도 없음
단점은?
✔️- 복잡한 사이트를 만드는 작업에는 효율적이지 못함
- 보안에 안정하지 않은 언어 구조
보안상의 취약성으로 인해 JSP나 ASP.NET으로 대체되는 경향이 있음
언어별로 장단점이 있으니 사용 목적이나 상황에 따라 알맞은 언어를 고르는 것이 바람직함!
PHP 동작 원리
✔️PHP는 웹 시스템인 클라이언트 / 서버 환경에서 동작하는 서버 사이드 스크립트 언어
① : 클라이언트가 웹 브라우저를 통해 웹 서버에 원하는 웹 페이지를 요청
② : 웹 서버는 클라이언트가 요청한 웹 페이지의 로직 및 데이터베이스와의 연동을 위해 PHP 파서(parser)에 이에 대한 처리를 요청
③ : 이때 PHP 파서는 데이터베이스와의 연동이 필요하면 데이터베이스와 데이터의 처리를 수행
④ : PHP 파서는 웹 페이지의 로직 및 데이터베이스와의 작업 처리 결과를 웹 서버로 전달
⑤ : 웹 서버는 전달받은 데이터로 웹 페이지를 완성하여 웹 브라우저로 응답을 전송
웹 시스템(Web System)
의미 : 우리가 매일 사용하고 있는 인터넷을 구성하는 시스템
이러한 웹 시스템은 다음 그림과 같이 클라이언트(client)와 서버(server)로 구성
- 서버(server) : 간단히 말해 웹 서비스를 제공하는 컴퓨터를 의미
- 클라이언트(client) : 서버가 제공하는 웹 서비스를 이용하는 사용자 또는 사용자의 기기(브라우저)를 의미
클라이언트 사이드와 서버 사이드
웹 시스템에서의 처리는 클라이언트와 서버 중 어느 쪽에서 수행되는 작업인가에 따라 다음과 같이 구분할 수 있다.
- 클라이언트 사이드(client-side)
- 서버 사이드(server-side)
클라이언트 사이드(client-side)
✔️클라이언트 측에서 수행하는 처리를 의미
- 웹 시스템에서 브라우저는 서버에서 수신한 HTML 문서를 해석하여 여러분의 화면에 표시함
- 사용되는 언어 : 자바스크립트(JavaScript)
서버 사이드(server-side)
✔️서버 측에서 수행하는 처리를 의미
- HTML 문서 + 서버 사이드 스크립트 언어의 코드를 브라우저에서 요청
- 서버에서 처리한 후 그 결과를 브라우저에 전송
- 사용되는 언어 : PHP
이처럼 서버에 미리 저장된 파일이 아닌 서버에 있는 데이터들을 서버 사이드 스크립트 언어로 가공하여 생성되는 페이지를 동적 웹 페이지(dynamic web page)라고 한다.
정적 페이지 VS. 동적 페이지
차이점 : 페이지를 요청한 사용자의 정보와 현재 시점에 따라 내용이 변할 수 있다/없다.
✔️ 정적 페이지
- 서버에 미리 저장되어 있음
- 주로 HTML, CSS, Javascript, 이미지로 구성
- 사용자가 page를 요청하면 서버는 해당 정적 페이지를 반환해주는 역할만 수행
✔️ 동적 페이지
- 사용자가 page를 요청하면 DataBase로부터 얻은 해당 사용자의 정보나 현재 시점 정보 등을 가공해 새롭게 생성한 page를 반환
- 동일한 요청이라도 누가/언제 요청했는지에 따라 내용이 달라짐
- 대부분의 웹 페이지가 동적 페이지에 해당
CGI 개념
위에서 설명한 동적 페이지를 사용자에게 제공하기 위해 웹 서버 내에 프로그래밍 기능이 들어가는 방식을 CGI라고 한다.
하지만 CGI 방식의 경우 웹 서버에서 각각의 클라이언트 요청에 대해 독립적인 별도의 프로세스를 생성해 요청을 처리하므로, 시스템에 부하가 커져 문제가 발생하게 된다.
웹 애플리케이션 서버(WAS)
CGI 방식의 문제점을 해결하기 위해 설계
- 웹 어플리케이션 서버(WAS)는 웹 서버와 DB 서버 사이에서 미들웨어
- DB 연동 및 동적 페이지를 생성하기 위한 처리를 한다.
Reference
블로그의 정보
개발하는만두
youngjun._.