http://brown.ezphp.net/39 에서 참조

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라고 볼 수 있습니다. 그래서 PHP도 저 위의 그림과 비슷한 구조를 가집니다.

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

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

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

http://brown.ezphp.net/39 에서 참조

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라고 볼 수 있습니다. 그래서 PHP도 저 위의 그림과 비슷한 구조를 가집니다.

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

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

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

http://freean.egloos.com/186933 에서 참조

CGI
(common gateway interface)

 CGI는 웹서버가 하지 못하는 일을 외부의 프로그램을 이용할 수 있게 하는 표준적인 방법, 또는 그 방법에 따라 수행되는 외부 응용 프로그램들을 가리킨다.

 일반적으로 웹 서버가 브라우저에게 넘겨주는 HTML 자료는 정적인 자료이다. 즉, 일정한 텍스트 화일이다. 그러나 질의를 통해서버의 데이타베이스로부터, 만족하는 레코드만의 출력을 원할 경우, 되돌려지는 문서는 질의에 따라 동적으로 변화해야 한다.CGI는 바로 이러한 역할을 수행하기 위해 존재하는 인터페이스 프로그램이다.

보통 이 CGI로 동작되는 응용 프로그램을 게이트웨이 스크립트(Gateway Script)라고 부른다. 게이트웨이 스크립트는 웹브라우저에 의해 웹서버에서 동작되는 프로그램을 말한다. 이 게이트웨이 스크립트를 통해서 웹서버는 보통 그 시스템의 다른 프로그램들과 연결된다. 이 게이트웨이 프로토콜은 반드시 특수한 스크립트 파일일필요는 없고, 단지 실행 가능한 프로그램이기만 하면 된다.

(1) 게이트웨이 스크립트의 동작 원리

1) 브라우저가 서버에게 게이트웨이 스크립트의 수행을 요구한다.
2) 서버는 게이트웨이 스크립트에 해당하는 스크립트를 수행한다.
3) 게이트웨이 스크립트는 외부 프로그램이나 DB를 수행한다.
4) 수행결과를 다시 서버에 넘겨준다
5) 넘겨받은 수행 결과를 브라우저에게 다시 전송한다.

보통 이런 관계로 브라우저와 서버, CGI의 관계가 설정된다. 예를 들어 링크에

cgi

라고 설정하고, 웹서버측에서 getdate 스크립트를 설치하면 다음과 같이 된다.

#!/bin/sh
echo Context-type: text/html
echo 
/bin/date

이 스크립트를 설치하면 이에 해당하는 동작을 하게 된다.

CGI는 실행가능한 프로그램이므로, 시스템에 실행 화일로 존재하게 된다. Web 서버는 CGI프로그램의 내용을 보내는 것이 아니라, 실행결과를 보내야 한다. 그러므로, 서버가 실행시키는 프로그램이 CGI다. 이를 위해 CGI 프로그램들은 특정한 디렉토리에 존재하게 된다. 이 디렉토리는 Web 마스터가 직접 관리하며, 일반 사용자가 CGI프로그램을 생성시킬 수는 없다. NCSA HTTPd 서버에서는 /cgi-bin이라는 디렉토리가 할당된다. 이 곳에 CGI프로그램들이 놓여지게 된다.

CGI 응용 프로그램의 작성에서 가장 많이 사용되는 언어는 C, C++, Java, Perl 등이다

http://freean.egloos.com/186933 에서 참조

CGI
(common gateway interface)

 CGI는 웹서버가 하지 못하는 일을 외부의 프로그램을 이용할 수 있게 하는 표준적인 방법, 또는 그 방법에 따라 수행되는 외부 응용 프로그램들을 가리킨다.

 일반적으로 웹 서버가 브라우저에게 넘겨주는 HTML 자료는 정적인 자료이다. 즉, 일정한 텍스트 화일이다. 그러나 질의를 통해서버의 데이타베이스로부터, 만족하는 레코드만의 출력을 원할 경우, 되돌려지는 문서는 질의에 따라 동적으로 변화해야 한다.CGI는 바로 이러한 역할을 수행하기 위해 존재하는 인터페이스 프로그램이다.

보통 이 CGI로 동작되는 응용 프로그램을 게이트웨이 스크립트(Gateway Script)라고 부른다. 게이트웨이 스크립트는 웹브라우저에 의해 웹서버에서 동작되는 프로그램을 말한다. 이 게이트웨이 스크립트를 통해서 웹서버는 보통 그 시스템의 다른 프로그램들과 연결된다. 이 게이트웨이 프로토콜은 반드시 특수한 스크립트 파일일필요는 없고, 단지 실행 가능한 프로그램이기만 하면 된다.

(1) 게이트웨이 스크립트의 동작 원리

1) 브라우저가 서버에게 게이트웨이 스크립트의 수행을 요구한다.
2) 서버는 게이트웨이 스크립트에 해당하는 스크립트를 수행한다.
3) 게이트웨이 스크립트는 외부 프로그램이나 DB를 수행한다.
4) 수행결과를 다시 서버에 넘겨준다
5) 넘겨받은 수행 결과를 브라우저에게 다시 전송한다.

보통 이런 관계로 브라우저와 서버, CGI의 관계가 설정된다. 예를 들어 링크에

cgi

라고 설정하고, 웹서버측에서 getdate 스크립트를 설치하면 다음과 같이 된다.

#!/bin/sh
echo Context-type: text/html
echo 
/bin/date

이 스크립트를 설치하면 이에 해당하는 동작을 하게 된다.

CGI는 실행가능한 프로그램이므로, 시스템에 실행 화일로 존재하게 된다. Web 서버는 CGI프로그램의 내용을 보내는 것이 아니라, 실행결과를 보내야 한다. 그러므로, 서버가 실행시키는 프로그램이 CGI다. 이를 위해 CGI 프로그램들은 특정한 디렉토리에 존재하게 된다. 이 디렉토리는 Web 마스터가 직접 관리하며, 일반 사용자가 CGI프로그램을 생성시킬 수는 없다. NCSA HTTPd 서버에서는 /cgi-bin이라는 디렉토리가 할당된다. 이 곳에 CGI프로그램들이 놓여지게 된다.

CGI 응용 프로그램의 작성에서 가장 많이 사용되는 언어는 C, C++, Java, Perl 등이다

http://freean.egloos.com/186933 에서 참조

CGI
(common gateway interface)

 CGI는 웹서버가 하지 못하는 일을 외부의 프로그램을 이용할 수 있게 하는 표준적인 방법, 또는 그 방법에 따라 수행되는 외부 응용 프로그램들을 가리킨다.

 일반적으로 웹 서버가 브라우저에게 넘겨주는 HTML 자료는 정적인 자료이다. 즉, 일정한 텍스트 화일이다. 그러나 질의를 통해서버의 데이타베이스로부터, 만족하는 레코드만의 출력을 원할 경우, 되돌려지는 문서는 질의에 따라 동적으로 변화해야 한다.CGI는 바로 이러한 역할을 수행하기 위해 존재하는 인터페이스 프로그램이다.

보통 이 CGI로 동작되는 응용 프로그램을 게이트웨이 스크립트(Gateway Script)라고 부른다. 게이트웨이 스크립트는 웹브라우저에 의해 웹서버에서 동작되는 프로그램을 말한다. 이 게이트웨이 스크립트를 통해서 웹서버는 보통 그 시스템의 다른 프로그램들과 연결된다. 이 게이트웨이 프로토콜은 반드시 특수한 스크립트 파일일필요는 없고, 단지 실행 가능한 프로그램이기만 하면 된다.

(1) 게이트웨이 스크립트의 동작 원리

1) 브라우저가 서버에게 게이트웨이 스크립트의 수행을 요구한다.
2) 서버는 게이트웨이 스크립트에 해당하는 스크립트를 수행한다.
3) 게이트웨이 스크립트는 외부 프로그램이나 DB를 수행한다.
4) 수행결과를 다시 서버에 넘겨준다
5) 넘겨받은 수행 결과를 브라우저에게 다시 전송한다.

보통 이런 관계로 브라우저와 서버, CGI의 관계가 설정된다. 예를 들어 링크에

cgi

라고 설정하고, 웹서버측에서 getdate 스크립트를 설치하면 다음과 같이 된다.

#!/bin/sh
echo Context-type: text/html
echo 
/bin/date

이 스크립트를 설치하면 이에 해당하는 동작을 하게 된다.

CGI는 실행가능한 프로그램이므로, 시스템에 실행 화일로 존재하게 된다. Web 서버는 CGI프로그램의 내용을 보내는 것이 아니라, 실행결과를 보내야 한다. 그러므로, 서버가 실행시키는 프로그램이 CGI다. 이를 위해 CGI 프로그램들은 특정한 디렉토리에 존재하게 된다. 이 디렉토리는 Web 마스터가 직접 관리하며, 일반 사용자가 CGI프로그램을 생성시킬 수는 없다. NCSA HTTPd 서버에서는 /cgi-bin이라는 디렉토리가 할당된다. 이 곳에 CGI프로그램들이 놓여지게 된다.

CGI 응용 프로그램의 작성에서 가장 많이 사용되는 언어는 C, C++, Java, Perl 등이다