2013-12-10 4 views
0

Я пишу простой сценарий Perl FasCGI по exampleПочему мой Perl FastCGI скрипт не открывается сокет

#!/usr/bin/perl -w 
use strict; 

use FCGI; 

my $count = 0; 
my $request = FCGI::Request(); 

while($request->Accept() >= 0) { 
    print("Content-type: text/html\r\n\r\n", ++$count); 
} 

, чем я делаю этот скрипт исполняемым и выполнение его в терминале, но вместо того, чтобы открыть сокет, что скрипт печатает

Content-Type: текст/html

и заканчивается. Почему?

UPDATE

Спасибо, ребята, но я не понимаю, в один момент, как мой сценарий знаю, я установлен или нет модуль веб-сервера? И почему я нужен сервер для нормально запустить FastCGI скрипт? например, когда я запускаю запуск Catalyst fastcgi, мне не нужен какой-либо сервер, и я могу запустить этот скрипт на любом компьютере без сервера.

+0

Я уверен, что FCGI ожидает, что ваш скрипт каким-то образом будет вызван с веб-сервера. Это не собственный веб-сервер. –

ответ

1

Пожалуйста, проверьте Установка FastCGI по следующей ссылке. Я считаю, что вам это не хватает. http://www.intranetwerx.com/bookshelf2/linux/cgi/ch17_02.htm

+0

скрипт fastcgi также является скриптом CGI. Но для fastcgi веб-сервер отправляет запрос на быстрый процесс CGI через сокет. Вы найдете более подробную информацию о: http://en.wikipedia.org/wiki/FastCGI#Implementation_details –

0

Это режим отладки. Вместо того, чтобы умереть, потому что вы не обеспечивали надлежащую быструю среду CGI, она имитирует один запрос.

unless ($req->IsFastCGI()) { 
    return -1 if $run_once; 

    $run_once = 1; 
    return 0; 
} 

Вы понимаете, что Fast CGI представляет собой протокол связи, используемый для обмена данными между скриптом и модулем в вашем веб-сервере, не так ли? Вам нужно, чтобы модуль веб-сервера запускал ваш скрипт.

Смежные вопросы