https://help.superhosting.bg/cgi-common-gateway-interface-fastcgi.html
  • bg
  • en

Хостинг, Домейни, Cloud, Виртуални сървъри (VPS), Managed VPS, SSL сертификати

Какво е CGI, FastCGI?

PHP
cgi, what is cgi, какво е cgi, cgi 1.1, cgi 1993, common gateway interface, ncsa httpd, fastcgi, какво е fastcgi, fcgid, mod_php

CGI (Common Gateway Interface) е уеб технология и протокол, по правилата на който се извършва комуникацията между уеб сървър (HTTP сървър) и други външни приложения (например PHP). CGI разширява възможностите на уеб сървъра, като добавя функционалността за обработка и генериране на динамично уеб съдържание.

CGI се използва като свръзка между уеб сървъра и допълнително инсталирани на сървъра приложения, които могат да генерират динамично уеб съдържание. Тези приложения се наричат още CGI скриптове и се създават с различни скриптови или програмни езици като PHP, Perl, Python и други.

В началото на Уеб, първите уеб сървъри са предоставяли уеб страници, които са съдържали предварително написан HTML код. Това съдържание не се е променяло, освен ако уеб разработчика не извърши някаква промяна в .html файла. Уеб съдържанието е било статично и каквото е имало в уеб страниците като код, това се е подавало от уеб сървъра към уеб браузъра.

С технологията CGI, обаче, вместо уеб сървърът да отговори със съществуващ HTML файл, той стартира изпълнението на приложение и му предава данните от HTTP заявката. Приложението от своя страна приема параметрите, обработва ги и връща готовите данни обратно към уеб сървъра. Едва тогава уеб сървърът връща отговор към уеб браузъра, като препраща генерирания HTML код.

Директория cgi-bin

Стандартно уеб страниците, файловете и всички документи, които се предоставят от уеб сървъра към уеб браузъра, се намират в определена (public) директория, например home/user/public_html. Когато има запитване от уеб браузъра, за определено съдържание, уеб сървърът проверява в тази директория и изпраща към уеб браузъра търсения файл.

Когато CGI технологията е добавена към уеб сървъра, се добавя и специфичната директория cgi-bin, например home/user/public_html/cgi-bin. В тази директория се разполагат CGI скриптовете. Всеки файл в тази директория се третира като изпълнима програма. При достъпване на скрипт от тази директория, вместо да изпрати съдържанието на файла към уеб браузъра, уеб сървърът се обръща към приложението, което отговаря за този скрипт. След като обработката на входящите данни приключи, приложението изпраща към уеб сървъра готовите данни, а той от своя страна ги препраща към HTTP клиента.

Например при достъпване на CGI скрипта http://mysitename.com/cgi-bin/file.pl уеб сървърът (през CGI) ще стартира приложението (Perl), което работи с този скрипт. Генерираните данни, от изпълнението на скрипта, ще се подадат към уеб сървъра, а той ще ги изпрати към уеб браузъра. Ако уеб сървърът не разполага със CGI, вместо цялата процедура по генериране на динамичното съдържание, в уеб браузъра на клиента ще се покаже като текст самия код на файла file.pl. Тоест, без CGI уеб сървърът отговоря направо със съдържанието на потърсения файл.

Освен CGI скриптовете в директорията cgi-bin, уеб сървърът може да се настрои така, че да разпознава като CGI скрипт определено файлово разширение. Всички файлове със зададеното разширение, независимо къде се намират на сървъра, ще се разпознават като CGI скрипт. Например всички файлове с разширение .php да се третират като CGI скрипт. В настройките на уеб сървъра се задава и кое приложение ще работи с тези файлове (в случая PHP).

FastCGI

FastCGI e по-нова и по-бърза уеб технология и всъщност е подобрен вариант на CGI. Като основната функционалност е същата - интерфейс между уеб сървъра и допълнителните приложения.

Необходимостта от създаването на FastCGI е породена от недостатъците на предишния протокол CGI. В отговор на това, Open Market създава FastCGI - високо-производителен вариант на CGI технологията, с разширени възможности. Основната цел на FastCGI е да намали натоварването, генерирано от работата на уеб сървъра с допълнителните приложения. Като по този начин позволи сървърът да приема и обработва повече заявки.

За да се опише FastCGI, може да се представят само разликите между двете уеб технологии.

Вижте нагледно сравнение на предимствата на двете технологии в статията CGI vs FastCGI.

Начин на работа на CGI Начин на работа на FastCGI

CGI
За всяка отделна HTTP заявка, CGI стартира приложение, което работи с извикания скрипт. След като приложението приключи с обработката и върне готовите данни, CGI прекратява процеса на приложението. При следваща заявка CGI стартира отново приложението.

Стартирането всеки път на приложението може да използва повече време и ресурси, отколкото самото генериране на изходните данни.

Колкото повече процеси се стартират, толкова повече ресурси ще са необходими като памет, изчислителна мощ и други. Освен натоварването на сървъра, към времето на зареждане на дадената уеб страница се прибавя и времето за стартиране на приложението.

FastCGI
Основната разлика със CGI е, че при FastCGI стартирания процес на приложението е дълготраен и не се прекратява веднага. След като приложението приключи обработката и върне готовите данни, неговия процес не се спира и се използва за обработка на следващи заявки. Резултат от това е намалено натоварване на сървъра и по-малко време за зареждане на дадената уеб страница.

Друга разлика и допълнение към технологията, е възможността FastCGI да се ползва на отдалечен сървър, различен от този на който се намира уеб сървъра.

Основната роля на CGI приложенията е да обработят данните от HTTP заявката и да върнат HTTP отговор. Тази роля във FastCGI се нарича "Responder". Освен нея са добавени още две роли, които едно приложение може да изпълнява - Authorizer и Filter.

PHP и Apache HTTP Server

Съществуват два най-разпространени начина, по които уеб сървърът Apache може да работи с PHP:

1. Използвайки CGI или FastCGI
На уеб сървъра му е указано къде се намира изпълнимия файл на PHP, който интерпретира PHP кода. При всяко зареждане на уеб страница, уеб сървърът стартира този интерпретатор (когато се ползва CGI). Когато се ползва FastCGI процесът на стартирания интерпретатор е дълготраен и обработва множество заявки. PHP настройките и PHP модулите се зареждат при всяко стартиране на PHP. Процесът е изолиран и се изпълнява извън процеса на уеб сървъра.
След извършени промени в настройките на PHP, в php.ini файл, може да се рестартира само процеса на PHP, без това да окаже влияние на уеб сървъра.

2. Използвайки PHP като модул на Apache (mod_php)
Интерпретаторът на PHP е част от уеб сървъра. Процесът на PHP е част от процеса на уеб сървъра и се стартира веднъж (инициализирането на PHP настройките и PHP модулите се извършва веднъж).
Ако са извършени промени в настройките на PHP, за да влезнат в сила, ще трябва да се рестартира уеб сървъра. Директивите на PHP (php_flag, php_value...) може да се поставят в конфигурационния файл на уеб сървъра - .htaccess.

info-iconНа всички сървъри при СуперХостинг.БГ, за споделен хостинг и Managed VPS, по подразбиране PHP работи през FastCGI (като се поддържа и CGI).


info-iconCGI технологията се появява в Уеб през 1993г., като част от уеб сървъра NCSA HTTPd (National Center for Supercomputing Applications HTTP daemon). Първата версия на CGI v.1.1 е обявена през 1997г.

info-iconНай-известният и най-използваният уеб сървър Apache HTTP Server първоначално е бил базиран на уеб сървъра NCSA HTTPd, който пък е продължението на първият уеб сървър в интернет CERN httpd.

500px270px
SuperHosting.BG
    PHP
  • Какво е PHP модул (PHP разширение)?
    PHP модулите представляват разширения за PHP, най-често написани на програмния език C. PHP модулите могат да се компилират с PHP, така че да се зареждат статично (като са част от... »
  • Ползване на различен php.ini файл за PHP (cli) през SSH
    При ползване на PHP през команден режим по подразбиране с командата php се стартира PHP CLI бинарния файл, който отговаря на PHP версията инсталирана по подразбиране. За списък с всички опции... »
  • PHP CLI (Command Line Interface)
    PHP има различни интерфейси (SAPI) за взаимодействие със средата, в която работи, и за връзка с външни (за PHP) технологии. Два от интерфейсите са PHP CLI и PHP CGI (FastCGI). От версия... »
  • Активиране на PHP модул/разширение в хостинг акаунта
    Активиране на PHP модул през PHP Manager by SuperHosting За улеснено активиране и деактивиране на PHP модули в хостинг акаунта може да използвате PHP Manager by SuperHosting, в контролния панел cPanel. При... »
  • PHP модул - pspell (Portable Spell Checker Interface Library)
    pspell (Portable Spell Checker Interface Library) е разширение за PHP за проверка на правописа, работещо със системната библиотека GNU Aspell (C++). Aspell може да се ползва и от други езици, със... »
Всички права запазени © 2005-2017 , www.superhosting.bg