cgi:
Запрос от клиента -> Веб сервер запускает интерпретатор -> Скрипт парсится, интерпретируется, выполняется -> Вывод передается веб-серверу -> Интерпретатор завершается -> Веб-сервер передает вод скрипта клиенту
fast-cgi (тоже такой способ запуска per-server программ):
Запускается cgi-программа в виде демона (
что-то вроде:
while(1) {
acept_request();
generate_answer();
}
)
Запрос от клиента -> Веб-сервер передает запрос демону -> Демон генерирует ответ -> И передает его веб-серверу -> Веб-сервер его клиенту
mod_perl (могу ошибаться, сам не работал):
Скрипт интерпретируется _встроенным в веб-сервер_ интерпретатором
Запрос от клиента -> Веб-сервер передает запрос _уже интерпетированному_ скрипту -> скрипт генерирует ответ -> И передает его веб-серверу -> Веб-сервер его клиенту
В послудних двух случаях скрипт не интерпретируется каждый раз при запросе клиента (особенно актуально, для больших скриптов [не долго выполняющихся, а именно больших по объему])