Python VS php
python
- 범용 풀 스택 프로그래밍 언어
- 객체지향 스크립팅 언어
- 유지 보수성 및 변경 사항 획득에 유리
php
- 컨텐츠 관리 시스템, 전자 상거래 웹 사이트 등에서 널리 사용됨
- 웹 애플리케이션을 개발할 때 데이터를 데이터베이스에 저장해야 하는데 php는 데이터베이스와 쉽게 통합될 수 있음
- 웹 개발에 광범위하게 사용됨
- 서버 측 스크립팅 언어
- 객체 지향 프로그래밍 지원
- 파이썬에 비해 유지 관리가 쉽지 않음
- Laravel, Symfony, CodeIgniter, Cake PHP는 관련 프레임 워크
웹 시스템
- 서버와 클라이언트로 구성된 시스템
- 서버란 웹 서비스를 제공하는 컴퓨터
- 클라이언트란 서버가 제공하는 웹 서비스를 이용하는 사용자 또는 사용자의 기기를 의미
- 웹 시스템에서의 처리는 클라이언트와 서버 중 어느 쪽에서 수행되는 작업인가에 따라 다음과 같이 구분됨
- 클라이언트 사이드
- 서버 사이드
- 클라이언트 사이드란 클라리언트 측에서 수행하는 처리를 의미
- 웹 시스템에서 브라우저는 서버에서 수신한 HTML문서를 해석하여 화면에 표시 → 클라이언트 사이드에서 자주 사용하는 스크립트 언어에는 자바스크립트
- 서버 사이드란 서버 측에서 수행하는 처리
- 브라우저에서 요청한 HTML 문서에 서버 사이드 스크립트 언어의 코드가 포함되어 있으면, 서버는 이 부분을 자신이 처리하고 그 결과를 브라우저에 보여줌
- 이러한 서버 사이드에서 자주 사용하는 스크립트 언어가 바로 PHP
PHP에 대한 조금 더 자세한 내용
- C언어를 기반으로 만들어진 서버 측에서 실행되는 서버 사이트 스크립트 언어
- PHP로 작성된 코드를 HTML 코드 안에 추가하면 웹 서버는 해당 코드를 해석하여 자동으로 HTML 문서를 생성한다.
PHP 특징
- 주요 운영체제와 대부분의 웹 서버에서 지원
- 다른 프로그래밍 언어보다 직관적으로 코드를 작성할 수 있어서 작성해야 하는 코드의 양이 적음
- 텍스트 처리에 특화되어 있어 HTML 문서 처리에 적합
PHP 단점
- 간단한 사이트를 제작하기 위해 만든 언어라서 복잡한 사이트를 만드는 데는 효율적이지 못하다.
- 보안에 안전하지 않은 언어 구조를 가진다.
PHP 동작 원리
- 웹 시스템 중 서버 측에서 실행되는 서버 사이드 언어를 웹 프로그래밍 언어라고 부름.
- 웹 프로그래밍 언어의 종류 ( ex) PHP, JSP, ASP.NET)
- 사용자 (클라이언트) → 웹 페이지를 요청 → 웹 서버는 스크립트를 실행 → PHP 파서를 거쳐 데이터베이스 전달, 그리고 이렇게 처리된 결과로 웹 페이지 응답
Server Side Script Language
- 웹이라는 서비스를 생각해보면, 웹 서버와 클라이언트라고 하는 관계를 무조건적으로 맺게 되어 있다.
- 웹 서버의 구체적인 예시
- 웹 어플리케이션
- 데이터베이스
- 통상적으로 서버라고 부를 수 있는 개념은 위의 3가지 개념이 모두 포함이 되어 있는 상태
- 위의 3가지 요소 각각이 한 틀 안에 모여 있고 이를 실행 시키기 위해 연결되어 있는 형태라고 보면 됨.
- 클라이언트에서, 특정 웹 사이트에 접근할 수 있게 할 수 있는 소프트웨어가 웹 브라우저. 이 웹 브라우저를 다른 말로 웹 클라이언트라고 부른다. 그리고 그에 반대편, 즉 서버 쪽에는 웹 서버라고 하는 개념이 있다.
- 웹 브라우저에다가 도메인을 입력하면 서버 컴퓨터가 있는 주소, 그 곳으로 가서 웹 서버를 만나게 된다. 거기서 특정 페이지를 요청을 하고, 그 요청을 받은 웹 서버가 웹 브라우저에게 전달된다
- 구체적인 개념 : 웹 브라우저는 사파리, 웹 서버의 구체적인 개념에 해당되는 것은? 아파치, IIS, nginx(급부상)
그렇다면 PHP는?
- 웹 브라우저를 나타내주는 언어는 HTML이다. 사용자가 브라우저를 통해 요청을 하게 되면 웹 서버는 HTML을 웹 클라이언트에게 전송한다. 그러면 웹 브라우저는 이를 해석해 사용자에게 다시 보여준다.
- 이러한 과정을 따르는 와중에 문제가 생긴다. 일단 HTML을 정적인 언어로, 수작업으로 하나 하나 보여줘야 하는 언어이다. 정적이니까 당연히 웹 페이지를 제공하는 것에 한계를 느끼고 그러한 고민의 결과로 CGI (Common Gateway Interface)가 등장한다.
- 웹 클라이언트가 웹 서버에게 요청을 할 때, 웹 서버에 도달을 하게 되면 웹 확장자를 확인한다, 그러면 확장자가 php라면 php engine을 통해 동적인 웹 페이지를 처리한다. 그리고 이를 해석하여 클라이언트로 전달한다. 이 과정에서 웹 서버와 php engine 사이에서 동작하는 통신규약, 약속 등으로 볼 수 있다. 이것이 바로 CGI이다.
- 이렇게 되면 어떤 것이 가능한가? 웹 서버를 자유롭게 Apache에서 nginx로 바꿀 수 있고, php engine을 파이썬으로 바꿀 수 있고, 자바로도 바꿀 수 있다. CGI 통신 규약 때문에 각각의 제품들을 다른 것으로 바꿀 수 있고 이는 표준화로 연결된다.
CGI와 WAS
- 위에서 살펴 본 것처럼 정적인 정적으로 동작하는 웹 서버를 동적으로 만들기 위한 것이 CGI. WAS란 웹 서버 + CGI를 말하는 것. 굳이 따로 CGI라고 언급하지 않고, 웹 어플리케이션 서버라고 언급이 된다.
Reference
https://ko.gadget-info.com/difference-between-php
http://www.tcpschool.com/php/intro