Автор Тема: работа с FastCGI  (Прочитано 11808 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн AnnA

  • Фанатка форума
  • Старожил
  • ****
  • Сообщений: 263
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
работа с FastCGI
« : 12 Мая 2004, 11:56:03 »
Доброго времени суток. :)
создаем самый обычный script.cgi и из него работаем с модулем:

#!/usr/bin/perl -wT

use strict;
use warnings; #это убираем, когда скрипт уже готов/отлажен и уходит в работу
use Socket;
use Fcntl \':flock\'; # import LOCK_* constants
use CGI::Fast;
use CGI qw(:standard);
use CGI::Carp qw(fatalsToBrowser set_message);
set_message("здесь просто сообщения ошибок");
use vars qw(объявляем много-много переменных, массивов и хэшей);

use POSIX;
POSIX::setlocale (&POSIX::LC_CTYPE, "ru");
use locale;

my $handling_request = 0;
my $exit_requested = 0;
my $request = FCGI::Request();

while ($handling_request = ($request->Accept() >= 0)) {

    &do_request;
    $handling_request = 0;
    last if $exit_requested;
}

sub do_request() { весь работающий код
...............
...............

$request->Finish();
} # EO sub do_request()
$request->Finish();
exit(0);


Правильно ли это? Или правильнее все же было бы делать script.fcgi, не подключать в теле скрипта use CGI::Fast; уповая на то, что он каким-то чудесным образом сам подключится и все сделает как надо? Не думаю, что для этого достаточно просто прописать нечто вроде AddHandler cgi-script .cgi .fcgi в корневом .htaccess

спасибо.
пока-пока. :)

Оффлайн Phoinix

  • RW
  • Ветеран
  • *****
  • Сообщений: 1097
  • +0/-0
  • 2
    • Просмотр профиля
    • http://phoinix.ucoz.ru
работа с FastCGI
« Ответ #1 : 12 Мая 2004, 12:23:32 »
AnnA

Могу ошибаться, но если речь идет о FastCGI, то модуль Perl называется FCGI, но его одного мало, так как аще требуется установка модуля для сервера mod_fastcgi для Apache.

http://www.fastcgi.com/

Оффлайн AnnA

  • Фанатка форума
  • Старожил
  • ****
  • Сообщений: 263
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
работа с FastCGI
« Ответ #2 : 12 Мая 2004, 12:56:53 »
Phoinix ага, вы не ошибаетесь. Так и есть. :) Все уже установлено, конечно же. И на рабочем и у хостера. т.к. поначалу test_fast.fcgi из документации и ругался на отсутствие FCGI.pm
Другими словами этот шаг позади и исходить нужно из того, что FastCGI полностью рабочий. :) Получается, что установлен-то он установлен, но я не знаю использую ли я его полностью и использую ли вообще. :)
Сомнения возникают потому, что локально на w2k "на глаз" разницы нет совершенно. А, если делаю замеры с помощью Бенчмарка - разница во времени... ну совсем незначительная или, в некоторых случаях, с FastCGI код обрабатывается даже медленее. Вот именно это меня и смущает. Мне кажется, что нужно где-то в конфигах апача прописать что-то еще.
Спасибо, за ответ. :)
а можно ли каким-либо образом проверить установлен ли mod_fastcgi у хостера?
пока-пока. :)

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
работа с FastCGI
« Ответ #3 : 12 Мая 2004, 13:11:26 »
Покажи конфиг Apache
The documentations is your friend

Оффлайн AnnA

  • Фанатка форума
  • Старожил
  • ****
  • Сообщений: 263
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
работа с FastCGI
« Ответ #4 : 12 Мая 2004, 14:04:48 »
Apache 1.3.20

\\usr\\local\\Apache\\conf\\httpd.conf

LoadModule rewrite_module modules/mod_rewrite.so

все остальные LoadModule закомментированы

AddHandler cgi-script .cgi .pl .fcg .fcgi

или что конкретно вас интересует? не могу же я весь httpd.conf сюда выкладывать. :) Он уж больно большой.
пока-пока. :)

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
работа с FastCGI
« Ответ #5 : 12 Мая 2004, 14:12:38 »
AnnA стоит почитать документацию.
делаем раз:
AddHandler cgi-script .cgi
AddHandler fastcgi-script .fcgi
делаем два:
LoadModule fastcgi_module    путь где у тебя лежит/mod_fastcgi.so
делаем три:
FastCgiServer /путь к скрипту(полный!)/script.fcgi -listen-queue-depth 50 -processes 2 -idle-timeout 300 -flush
про опции - курить ман
о результатах запуска сервера доложить сюда
« Последнее редактирование: 12 Мая 2004, 19:18:12 от NeoNox »
The documentations is your friend

Оффлайн AnnA

  • Фанатка форума
  • Старожил
  • ****
  • Сообщений: 263
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
работа с FastCGI
« Ответ #6 : 12 Мая 2004, 14:34:24 »
Цитировать
о результатах запуска сервера доложить сюда

:) будет исполнено, мастер.
спасибо. сейчас попробую - доложу.
---
скачала mod_fastcgi-2.4.2 Makefile.nt предлагает мне собрать mod_fastcgi.dll
а я не хочу. :(
мне ведь нужен именно mod_fastcgi.so
охо-хо. поищу на гугле.
пока-пока. :)

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
работа с FastCGI
« Ответ #7 : 12 Мая 2004, 14:50:22 »
AnnA
упс. у вас какая ОС?
The documentations is your friend

Оффлайн AnnA

  • Фанатка форума
  • Старожил
  • ****
  • Сообщений: 263
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
работа с FastCGI
« Ответ #8 : 12 Мая 2004, 14:58:40 »
Цитировать
AnnA:
Сомнения возникают потому, что локально на w2k "на глаз" разницы нет совершенно.
Windows 2000 ;)
плохо? не будет работать думаете?
все же соберу dll и попробую сделать так как вы написали. я еще нашла вот такую доку: http://www.fastcgi.com/mod_fastcgi/INSTALL
буду "курить" ее теперь. ;)
пока-пока. :)

Оффлайн AnnA

  • Фанатка форума
  • Старожил
  • ****
  • Сообщений: 263
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
работа с FastCGI
« Ответ #9 : 12 Мая 2004, 15:00:50 »
а все же - нельзя никак проверить установлен ли mod_fastcgi у хостера? а то я сейчас потрачу уйму времени и окажется, что все это зря. обидно.
пока-пока. :)

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
работа с FastCGI
« Ответ #10 : 12 Мая 2004, 15:25:05 »
Цитировать
AnnA:
Windows 2000

Понятно.  Нужно ставить dll-ку
Цитировать

плохо? не будет работать думаете?

будет. уверен.
Цитировать

а все же - нельзя никак проверить установлен ли mod_fastcgi у хостера? а то я сейчас потрачу уйму времени и окажется, что все это зря. обидно.

Как вариант, спросить его об этом.
The documentations is your friend

Оффлайн Phoinix

  • RW
  • Ветеран
  • *****
  • Сообщений: 1097
  • +0/-0
  • 2
    • Просмотр профиля
    • http://phoinix.ucoz.ru
работа с FastCGI
« Ответ #11 : 12 Мая 2004, 15:32:48 »
AnnA
Цитировать
а все же - нельзя никак проверить установлен ли mod_fastcgi у хостера?


Для этого у хостеров есть саппорт, куда нужно задавать вопросы, а вообще проверить его наличие можно пропробовав запустить скрипт на сервере с use FCGI;, т.к. данный модуль в одиночку бесполезен, хотя это не факт, что скрипты будут с ним работать даже при его наличии т.к. FastCGI настраивается под определенный хост.

Оффлайн Mog.

  • Фанат форума
  • Ветеран
  • *****
  • Сообщений: 828
  • +0/-0
  • 0
    • Просмотр профиля
работа с FastCGI
« Ответ #12 : 12 Мая 2004, 15:54:30 »
А вот Chs\'ом писанная прога http://cgidrom.vov.ru/pi.zip которая показывает установленные модули
Опаньки (из результатов ее работы)
...
...
CGI::Carp
CGI::Cookie
CGI::Fast
CGI::Lite
...
...
Все болезни от нервов, только сифилис от удовольствия

Оффлайн AnnA

  • Фанатка форума
  • Старожил
  • ****
  • Сообщений: 263
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
работа с FastCGI
« Ответ #13 : 12 Мая 2004, 17:53:09 »
Вот что я поняла:
1. Проверить существование mod_fastcgi для Apache у хостера невозможно. Разве только спросить... /очень сомнительная проверка, согласитесь/.
2. Работа скрипта ft.fcgi:#!/usr/bin/perl -Tw

use CGI::Fast qw(:standard);
    $COUNTER = 0;
    while (new CGI::Fast) {
        print header;
        print start_html("Fast CGI Rocks");
        print
            h1("Fast CGI Rocks"),
            "Invocation number ",b($COUNTER++),
            " PID ",b($$),".",
            hr;
        print end_html;
    }
далеко не означает, что модуль-таки установлен на хостинге
3.
Цитировать
NeoNox:
Понятно. Нужно ставить dll-ку

но ведь у меня прекрасно работает
Цитировать
AnnA:
LoadModule rewrite_module modules/mod_rewrite.so

4. Хорошо. нужно - поставила.
httpd.conf:
#AddModule mod_fastcgi.c
LoadModule fastcgi_module modules/mod_fastcgi.dll

#SetHandler fastcgi-script
AddHandler fastcgi-script .fcg .fcgi .fpl
AddHandler cgi-script .cgi .pl

А теперь, когда запускаю вот тот скрипт проверки (см. выше):
Forbidden
You don\'t have permission to access /my/ft.fcgi on this server.
и лог пишет:
FastCGI: invalid (dynamic) server "d:/home/..../ft.fcgi": script not found or unable to stat()
где-то я ошиблась. :(
пока-пока. :)

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
работа с FastCGI
« Ответ #14 : 12 Мая 2004, 17:58:59 »
Что-то типа такого у тебя есть в конфиге?

   Options FollowSymlinks ExecCGI
   Options +Includes
The documentations is your friend

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28