PHP란 무엇인가...

PHP란 무엇인가...


우리가 WebSite를 돌아다니다 보면 흔히 보는 것 중 하나가 바로 게시판입니다.

이용자로부터 글을 입력받을 수 있게끔 장치가 되어 있는 것이지요. Web문서인 html만으로는 사실 인터넷의 최대의 장점, 상호커뮤니케이션에 한계가 있습니다.

물론 hypertext를 이용하여 원하는 곳으로 단순한 클릭만으로도 이동할 수는 있지만 좀더 복잡한, 이를테면 위에 예를 든 게시판 같은 것은 hypertext만으로는 결코 성취하는 것이 불가능하지요.

그리하여 나온 것이 CGI라는 것입니다. CGI는 Common Gateway Interface의 약자로 프로그램 자체를 의미하는 건 아닙니다. 단순히 말하자면 프로그램을 돌려서 IE 같은 브라우져에 값은 전달하는 것을 말한다고 생각하시면 됩니다.

예. 그렇습니다. PHP는 이 CGI를 구현하기 위한 하나의 도구랍니다. PHP 말고라도 ASP나 Perl 같은 CGI 스크립트, C, Java 같은 프로그램으로도 CGI를 구현할 수는 있습니다. 곧 PHP란 CGI를 구현하기 위한 수많은 프로그램 중 한 가지입니다.



PHP의 간략한 역사


PHP (당시는 Personal Home Page의 약자)는 처음 Rasmus Lerdorf가 고안했다. PHP는 원래 간단한 몇 가지 Perl 스크립트로 만들어진 것이었는데 Rasmus Lerdorf는 이것으로 홈페이지에 오는 사용자의 자취를 추적하는 데 사용했다.

그러다가 이것이 스크립트 엔진으로 발전했고 여기에 각종 폼 기능이 추가돼 PHP/FI가 됐다. PHP가 점점 인기를 얻어감에 따라 개발자들이 여기서 사용할 API를 만들었고 이렇게 해서 PHP3가 탄생했다.

현재는 PHP3에서 몇 가지 기능이 더 개선되고 스크립트 해석기가 완전히 새로 제작돼 훨씬 빨라진 PHP4(Zend)가 나왔다. 그리고 현재의 PHP는 일반적으로 PHP Hypertext Processor를 의미한다.



PHP가 좋은 이유...



첫번째, php는 거의 모든 운영체제에서 사용이 가능하다.
리눅스, 유닉스, 매킨토시, 솔라리스 등 거의 모든 플랫폼에서 쓰입니다. 간단하게 MS사에서 야심작으로 내놓은 asp를 비교해보죠.

asp 또한 웹언어이며 프로그래머들이 쇼핑몰이나 커뮤티케이션 등을 구축할때 많이 사용합니다. 그렇나 asp는 윈도우 운영체제 안에서만 작동됩니다.

MS사의 횡포인지 아님 어쩔 수 없었는지 하여튼 그렇게 만들어 놨습니다. 그럼 이 asp가 그렇게 나쁜거냐 ? 그건 아닙니다. 서두에서 말했듯이 모든 언어가 장단점이 있습니다.

두번째로 좋은 이유.. php는 '무료'다.
php란 언어는 한 개인에 의해서 만들어 졌으며 자유 소프트웨어의 철학인 오픈소스 및 GNU 정신을 따르고 있습니다.

한마디로 php를 하고 싶은데 돈이 없어서 다운을 못받는 일은 없다는 거죠 모든 소프트웨어는 웹상에서 공개되어 있습니다.

세번째, 속도가 빠르다.
cgi로 짜여진 게시판이나 방명록을 많이 보셨을겁니다. cgi 프로그램은 처리하는값이 사용자 수만큼 증가하기 때문에 그만큼 프로세스가 증가합니다.

때문에 서버에 과부하가 걸리죠 하지만 php는 해석엔진이 아파치에 탑재되어 있기 때문에 오직 하나만의 프로세스만 작동하며 그만큼 서버에 부하를 줄일 수 있습니다. 결국 웹상의 속도는 엄청 빠르겠죠..

네번째.. 함수가 많다.
언어를 처음 접하는 분들이라면 요것이 뭐가 좋냐고 생각하는 분들이 있을겁니다. 함수가 많다는 것은 그많큼 프로그래머들을 편하게 해줍니다. 예를 들어 c언어로 20줄 짜야 할 프로그램이 있다면 php로 5줄로 끝낼 수가 있습니다.




다섯번째, 100% 서버스크립트 언어이다.
php는 100% 웹상에서만 쓸 수 있도록 되어있습니다. c언어나 java는 웹 전용이 아니기 때문에 php 코드의 몇배에 해당하는 코드를 써야 동일한 코드를 만들 수 있습니다.

여섯번째, 많은 데이터베이스를 지원한다.
요 데이터베이스라 함은 한마디로 많은 자료들을 저장할 수 있는 창고라고 할 수 있습니다. php 프로그램이 수행되면서 요 데이터베이스에 뭘 집어넣기도 하고 끄집어 내기도 합니다.

그럼 php에 지원하는 데이터베이스는 얼마나 많은데 여기다 이런걸 쓰냐 ???
(Oracle, Adabas D, Sybase, Filepro, mSQL, Mysql, Velocis, Informix, Solid, DBase 등등등..) 그냥 한줄만 쓰려고 이만 씁니다. 이중 php와 궁짝이 가장 잘 맞는 DB가 Mysql이랍니다.


MySQL는 무엇이냐?

MySQL은 가장 대중적인 SQL입니다. 곧 자료를 저장하고 보다 수월하게 관리하기 위하여 등장한 개념이지요. MySQL 말고라도 MSQL 같은 소규모 DB, 또 ASP와 연동하여 쓰이는 MSSQL 등 많은 다른 SQL이 있긴 하지만 MySQL에는 다른 SQL들을 압도하는 매력이 있습니다.

우선 MySQL은 Linux, Apache, PHP와 환상적인 조화를 이룬답니다. 인터넷 상에서 가장 많은 비중을 차지하는 서버는 Linux이겠고, 그 중 PHP와 MySQL의 연동은 Linux 서버의 근간을 이루고 있습니다.

또한 MySQL은 상용을 능가하는 기능에도 불구하고 무료입니다. 이는 Linux로부터 비롯된 인터넷상의 청년정신일 것인데 Linux이외에도 Apache, PHP 또한 무료이기에 개인적인 용도로 학습을 위해서라면 최적의 조건이죠. 뿐만 아니라 MySQL은 상용으로 쓰인다 하더라도 완벽한 기능을 나타냅니다.

자, 어떠신가요? PHP와 MySQL을 알고 나니 세계의 많은 젊은이들이 힘을 모아 이룩한 Linux+Apache+PHP+MySQL의 세계에 한 번 푹 빠지고 싶지 않으신가요?

MySQL를 발음하는 공식의 길은“나의 Ess Que Ell”(MY-SEQUEL가 아니라)이다.


왜 PHP + MySQL이어야만 하는가?


CGI를 구현하기 위한 프로그램은 상당히 많습니다. Win2k의 등장과 함께 더욱 인기가 많아진 asp가 그렇고, 최근 가장 각광 받는 jsp도 참 좋으며, 전통의 C 또한 요즘 다시 많이 쓰이고 있는 추세입니다.

그 외 java나 perl 등도 빠트릴 수 없는 CGI 프로그램이긴 합니다. 그럼에도 굳이 PHP와 MySQL을 선택해야 하는 까닭은 그 용이성에 있습니다. 프로그램이나 스크립트 언어가 거기서 거기인 면이 많아 왠만한 프로그래머라면 프로그램에 관계없이 필요에 따라 툴을 선택할 수 있는 것도 사실입니다.

그렇지만 각 프로그램의 유사성이라고 해봤자 구조적인 면에서나 존재할 뿐이지 사실 세부적으로 따지고 들자면 역시 그 어느 프로그램도 PHP 보다 쉬울 수는 없어 보입니다. C나 java 같이 전문적인 프로그램을 이용한다면 개발자가 일일히 많은 부분의 설정을 담당해야 할 것입니다.

그렇지만 PHP는 그런 골치 아픈 부분들을 대충 뭉뚱그려 놨기에 초보자로서는 훨씬 쉽게 원하는 프로그램을 짤 수 있는 것이지요. 물론 여기에는 장단점이 있습니다.

PHP의 그런 뭉뚱그림 때문에 어쩌면 꼭 필요한 세부사항을 개발자가 선택하기에 어려움이 있을 지도 모르겠습니다. 그렇지만 그런 일이야 인터넷에서 돌아가는 간단한 프로그램을 짜는 데에는 특별히 영향을 미치지 않을 거라 확신합니다.

그리고 PHP는 MySQL과 아주 조화를 잘 이룹니다. 다른 언어에 비하여 MySQL의 접속이나 제어가 용이하기 때문이죠. 물론 PHP가 Linux를 근본으로 개발되었긴 했지만 처음 PHP를 접하시는 분들도 Windows 환경에서 특별한 문제 없이 이용할 수 있습니다.

PHP 자체가 IIS나 PWS와도 잘 호환되긴 하지만 Windows용 Apache, 그리고 MySQL이 이미 개발되었기에 Windows 유저들도 Linux에 관한 전문적인 지식 없이 Apache+PHP+MySQL을 사용할 수 있다는 것은 초보자들에게 큰 힘이 되기도 하겠죠.

^^ 아, 그리고 이들은 모두 무료라는 것. Windows용 MySQL은 쉐어웨어가 되었긴 했지만 개인 유저라면 과거와 똑같이 이용할 수 있습니다.

곧 아무런 비용없이Apache+PHP+MySQL의 환상적인 효과를 경험할 수 있을 것입니다.


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

XML 문서파싱 - SAX 방식 , DOM 방식  (0) 2007.10.05
간단한 페이징 처리  (0) 2007.08.31
XML 생성 Class  (0) 2007.08.19
Return top