본문 바로가기

IT/PHP

[PHP] 입문, php는 어떻게 돌아가고 무엇인가?

HTML 밖에 모르는 웹 브라우저 ?

HTML밖에 모르는 웹 브라우저라.... (물론 약간은 틀린 말입니다.)
바꿔서 말씀드리면 웹 브라우저는 HTML밖에 알아 듣지 못한다는 소리입니다.
HTML이 브라우저가 쓰는 언어라는 것이지요(요즘 브라우저는 약간의 외국어(자바스크립트 등)도 합니다.^^;;)
그래서 우리가 홈페이지를 만들려면 모든 문서를 HTML로 작성해야만 합니다.


HTML을 울려 버린 CGI의 등장

인터넷 초창기에는 대부분의 홈페이지가 모두 HTML(SGML)로 만들어져 있었습니다. (선택의 여지가 없었죠)
HTML로 홈페이지를 만들어 보신 분은 아시겠지만 ...
HTML은 일방향적이고 수정하기 전에는 절대 변하지 않는 특성을 가지고 있습니다.
이러한 단점 때문에 사람들은 HTML 말고 다른 무언가가 필요함을 느꼈습니다.

그래서 생겨난 것이 바로 CGI (Common Gateway Interface)입니다.


CGI의 구조



CGI는 위와 같은 구조를 가지는데.. ( HTML은 1과 4의 과정만 있음 )

보시는 바와 같이 HTML 보다 한단계 더 처리를 함으로써 계산과 처리 기능이 추가되었습니다. 
이로인해 우리는 정적인 변화 없는 웹 페이지에서 변화가 자유롭고 방문자와 홈페이지 제작자간에 
서로 상호작용이 가능한 웹 페이지를 만들 수 있게 된 것입니다.
그러나 여기서 주의해야 할 점은 3번에서 보듯이 CGI로 처리된 값은 HTML로 전송되어 집니다.
웹 브라우저는 HTML밖에 모르니 HTML로 바꿔서 보여줘야 하는 것입니다.
( PHP를 하려면 당연히 HTML을 알고 있어야겠죠? )

그러면 CGI와 PHP는 어떤 관계인가?

PHP는 약간 다르긴 하지만 일종의 CGI라고 볼 수 있습니다.

참고. (중급)
CGI는 일반적으로 웹서버로 요청이 들어오면 CGI 프로그램을 실행하여 하나의 프로세스를 생성하고
그 처리 결과를 웹서버로 전송한 후 프로세스가 종료되는 형식입니다.
100개의 요청이 들어오면 CGI 프로세스가 100개가 생성이 됩니다.

PHP는 CGI와 달리 아파치 웹서버에 모듈로 장착되어 있습니다.
따라서 매회 실행시마다 프로세스가 생성되는 CGI와 달리 하나의 프로세스에 여러개의 쓰레드를 생성하여
처리가 가능합니다. 

프로세스, 쓰레드?? 뭐가다르냐구요?
프로세스는 각각 별도로 시스템 자원을 소비합니다.
1개의 프로세스가 메모리 1메가바이트를 소비한다면 100개의 경우 100메가 바이트의 메모리를 소비하게 됩니다.
그러나 쓰레드는 쓰레드간에 시스템자원의 공유가 가능하므로 
100개라고해서 100메가 바이트를 소비하는 것이 아니라 그보다 훨씬 적은양의 메모리를 소비하게 됩니다.
그래서 프로세스방식인 CGI 보다 쓰레드방식인 PHP가 성능이 우수합니다.


그래서 PHP도 저 위의 그림과 비슷한 구조를 가집니다.

HTML에 없는 계산 , 처리과정이란 도대체 어떤 것일까?

굉장히 많겠지만 지난시간에 테스트를 위해 만든 소스를 다시 이용해 보죠..


소스

<? 
    
echo "첫번째 프로그램"

    echo 
"아싸~"

    echo 
"날짜 : " date("Y-m-d"
); 
?>

이 소스는 2003년 4월 4일날 아래와 같은 결과였습니다.



그러나 똑같은 소스를 4월 5일에 똑같이 실행시켰는데.. 아래와 같은 결과가 나오네요..




이와같이 PHP는 사람이 바꾸지 않아도 알아서 처리하여 표시해 주는 것입니다.

여기에는 date 라는 날짜를 표시해주는 함수와 echo 라는 텍스트를 뿌려주는 함수 둘이 사용되었습니다.
위에서 말했듯이 우리는 결과를 HTML로 돌려주어야 한다고 했습니다.
위의 결과에 대해 소스보기를 하면...

첫번째 프로그램아싸~날짜 : 2003-04-05

이렇게 출력되어집니다.

위의 PHP코드는 일련의 처리과정을 거쳐 PHP 코드를 모두 지워 버리고 단지 HTML 코드만을 전송한 것이지요.

만약 PHP가 없었다면....

홈페이지에 날짜 표시 기능을 달기 위해서는 
매일 매일 홈페이지에 들러서 제일 먼저 오늘의 날짜를 고쳐야 하는 수고를 했을 것입니다.
물론 게시판 같은 것은 꿈도 못 꾸었겠죠..

참고. 
날짜 표시 부분은 자바스크립트로도 가능합니다.
그러나 약간의 차이가 있는데 PHP 는 서버 컴퓨터측 시계를 기준으로 하고
자바스크립트는 사용자의 컴퓨터 시계를 기준으로 합니다.

이제부터 고민해야 할 것...

이제부터는 PHP 함수등을 배워가면서 어떻게 그 결과를 HTML로 뿌려줄 수 있느냐를 고민하는 것
그것밖에 남지 않았군요..

 


 

 PHP 입문 ::: PHP는 무엇인가?


PHP는 무엇인가?

PHP (공식적 PHP Hypertext Preprocessor) 는 Server - side HTML-embedded 스크립트 언어입니다.
즉, PHP는 서버에서 실행되며 HTML을 포함한 스크립트 언어라는 말입니다.
HTML을 포함하고 있기 때문에 HTML 파일을 PHP 확장자 (.php )로 저장하여도 아무 지장없이 사용할 수 있습니다.


예제의 결과 ) http://ezphp.net/lect/39/example1-1.php

위처럼 보통 HTML 태그 사이에 특별한 PHP 시작(<?php)과 끝 태그(?>)를 이용하여 HTML과 PHP를 구분합니다.
1 ~ 5 줄까지 HTML 코드로 처리하다가 PHP 시작태그를 만나면 PHP 모드로 돌입합니다.
다시 PHP의 끝 태그를 만나면 HTML 모드로 7 ~ 8 줄까지 HTML로 인식하게 됩니다.


PHP는 무엇을 할 수 있는가?

PHP는 가장 기초적으로 어떤 CGI 프로그램을 만들 수 있고 다이나믹한 웹페이지를 만들 수 있습니다.
무엇보다도 PHP의 가장 두드러진 특징이라고 말할 수 있는 것은 매우 다양한 데이터베이스를 지원하고 
Oracle , MySQL , PostgreSQL 등 )
또한 데이터베이스를 이용한 웹페이지를 만드는 작업이 놀랄 만큼이나 쉬어졌다는 것입니다.
그리고 여러 프로토콜 ( POP3 ,NNTP ,IMAP 등 )을 이용할 수 있고 네트워크 소켓도 사용할 수 있습니다.

지금은 무슨 말인지 잘 모르더라도 차근차근 배워나가면 되는 것이니 기죽지 마세요! ^^


PHP의 간결한 역사

1994 by Rasmus Lerdorf (mailto:rasmus@php.net)

( 정말 간결하죠? 그래두 핵심적인 부분이라우~ 1994년에 Rasmus 라는 사람이 맹글었음 )

출처 : 
http://cafe.naver.com/79nana.cafe 

'IT > PHP' 카테고리의 다른 글

[PHP] if 문  (0) 2011.11.18
[PHP] return, break, continue  (0) 2011.11.18
[PHP] 쌩초보자를 위한 PHP 프로그래밍 ( MySQL 연동)  (0) 2011.11.17
[PHP] MySQL Fetch 함수  (0) 2011.11.16
[PHP] 기초 문법(php사용하기, 주석달기)  (0) 2011.11.14