Возможно вы искали: 'Hoyle Card Games (2010)'

May 15 2025 18:02:15
  • Как сделать 8Gamers.Ru домашней страницей?
  • Игры
    • База данных по играх
    • Игровые новости
    • Игровая индустрия
    • Обзоры на игры
    • Прохождения игр
    • Гайды к играм
    • Превью о играх
    • Игровые тизеры
    • Игровые арты
    • Игровые обои
    • Игровые скриншоты
    • Игровые обложки
    • Игровые трейлеры
    • Игровое видео
    • Вышедшие игры
    • Ближайшие релизы игр
  • Кино и ТВ
    • База данных по кино
    • Статьи о кино
    • Постеры
    • Кадры из кино
    • Кино трейлеры
    • Сегодня в кино
    • Скоро в кино
  • Комиксы и манга
    • Манга по алфавиту
    • База данных по комиксах
    • Читать онлайн комиксы
    • Читать онлайн манга
    • База персонажей
  • Читы и коды
    • Чит-коды для PC игр
    • Чит-коды для консольных игр
    • Трейнеры
    • Коды Game Genie
  • Моддинг
    • Модификации
    • Карты к играм
    • Программы для моддинга
    • Статьи о моддинге
  • Геймдев
    • Всё о создании игр
    • Список движков
    • Утилиты в помощь игроделу
    • Конструкторы игр
    • Игровые движки
    • Библиотеки разработки
    • 3D-модели
    • Спрайты и тайлы
    • Музыка и звуки
    • Текстуры и фоны
  • Рецензии
    • Игры
    • Кино
    • Аниме
    • Комиксы
    • Мангу
    • Саундтреки
  • Саундтреки
    • Лирика
  • Файлы
    • Патчи к играм
    • Русификаторы к играм
    • Сохранения к играм
    • Субтитры к кино
  • Медиа
    • Видео
    • Фото
    • Аудио
    • Фан-арты
    • Косплей
    • Фото с виставок
    • Девушки из игр
    • Рисунки
    • Рисуем онлайн
    • Фотохостинг
  • Юмор
    • Анекдоты
    • Афоризмы
    • Истории
    • Стишки и эпиграммы
    • Тосты
    • Цитаты
  • Флеш
    • Азартные
    • Аркады
    • Бродилки
    • Гонки
    • Для девочек
    • Для мальчиков
    • Драки
    • Квесты
    • Леталки
    • Логические
    • Мультфильмы
    • Открытки
    • Приколы
    • Разное
    • Спорт
    • Стратегии
    • Стрелялки
Статистика

Статей: 87772
Просмотров: 96111483
Игры
Injustice:  Gods Among Us
Injustice: Gods Among Us
...
Dark Souls 2
Dark Souls 2
Dark Souls II - вторая часть самой хардкорной ролевой игры 2011-2012 года, с новым героем, сюжето...
Battlefield 4
Battlefield 4
Battlefield 4 - продолжение венценосного мультиплеер-ориентированного шутера от первого ли...
Кино
Steins;Gate
Steins;Gate
Любители японской анимации уже давно поняли ,что аниме сериалы могут дать порой гораздо больше пи...
Ку! Кин-дза-дза
Ку! Кин-дза-дза
Начинающий диджей Толик и всемирно известный виолончелист Владимир Чижов встречают на шумной моск...
Обзоры на игры
• Обзор Ibara [PCB/PS2] 18357
• Обзор The Walking ... 18801
• Обзор DMC: Devil M... 19879
• Обзор на игру Valk... 15877
• Обзор на игру Stars! 17764
• Обзор на Far Cry 3 17948
• Обзор на Resident ... 16024
• Обзор на Chivalry:... 17508
• Обзор на игру Kerb... 17981
• Обзор игры 007: Fr... 16619
Превью о играх
• Превью к игре Comp... 17960
• Превью о игре Mage... 14464
• Превью Incredible ... 14721
• Превью Firefall 13479
• Превью Dead Space 3 16334
• Превью о игре SimC... 14730
• Превью к игре Fuse 15442
• Превью Red Orche... 15542
• Превью Gothic 3 16343
• Превью Black & W... 17354
Главная » Статьи » Разное » FastCGI или mod_perl, пример оформления FastCGI скрипта на Perl (perl fastcgi web)

FastCGI или mod_perl, пример оформления FastCGI скрипта на Perl (perl fastcgi web)

Ключевые слова: perl, fastcgi, web, (найти похожие документы)

From: Николай <http://kiev.pm.org/>
Date: Mon, 16 Dec 2007 14:31:37 +0000 (UTC)
Subject: FastCGI или mod_perl, пример оформления FastCGI скрипта на Perl

Оригинал: http://kiev.pm.org/?q=node/111

С января 2001 года сфера моей профессиональной деятельности тесно
связна с созданием web-сервисов, в основном аналитических.

Одной из технологий, используемых в работе, является mod_perl. FastCGI
не использовался ни разу. Почему? Как часто отвечают: "по
историческим причинам". А вот сейчас решил посмотреть в сторону
FastCGI подробней. Специфика нового проекта подразумевает наличие
frontend'да, например, nignx. "Нет, проблем", - говорю сам себе:
"frontend'ом будет nignx, а backend'ом - Apache". Но не так все
просто.

В рассылке по nignx, до того как было все разложено по полочкам в
различных документациях и заметках, часто задавались вопросы по
использованию PHP в режиме FastCGI. То есть люди массово избавлялись
от Apache mod_php, переходя не FastCGI. При этом, что в тот момент, не
знаю как сейчас, патч php-fpm (http://php-fpm.anight.org/) не был
включен в официальные исходники, так что многие пользовалось
spawn-fcgi от lighttpd.

Что это? Дань моде или нечто большее? Тем не-менее этот процесс
подтолкнул меня посмотреть подробней, какие есть у FastCGI
преимущества. Да, я знаю, mod_perl и mod_php координально отличаются в
области загрузки кода, но будем считать, что php акселераторы работают
хорошо и это не является причиной перехода с mod_php на FastCGI.

Известно, что процессы Apache с mod_perl очень прожорливы на память.
Может с FastCGI ее требуется меньше? Теоретически разница не должна
быть слишком большой: ведь под mod_perl можно все используемые модули
загрузить до начала создания дочерних процессов.

Стоп! Если мне не изменяет память, то mod_php так не может! Наверно
это и есть причина перехода с mod_php на FastCGI. Хм, но ведь и
spawn-fcgi в этом вопросе не помощник...

Тем не-менее с FastCGI решил разобраться до конца. Прописал в конфиге
nignx какой порт слушать и занялся perl. Для perl существует три
основных модуля FCGI, FCGI::ProcManager и FCGI::Spawn. (о FCGI::Async
и других разговор не ведем). Первый является основным, второй - это
менеджер процессов. Третий является надстройкой над первым двумя и
предназначен для запуска скриптов через require, то есть является в
некотором смысле аналогом Apache::PerlRun, поэтому мы его не
рассматриваем.

Модули FCGI, FCGI::ProcManager являются очень "зрелыми" и все
приведенные примеры предназначены для запуска FastCGI из-под
"пускалок", а не как самостоятельные, поэтому все примеры слегка
модифицируем. Перед основным циклом открываем сокет, который будет
слушать nignx:

use FCGI;
use CGI;
my $socket = FCGI:SurprisedpenSocket(":9000", 5); my $request = FCGI::Request(*STDIN, *STDOUT, *STDERR, %ENV, $socket);
my $count = 0;
while($request->Accept() >= 0) {
$count++;
print <<TEXT;
Content-Type: text/html
<h1>hello</h1>
$count
<hr> TEXT
print "$_ = $ENV{$_}
n" foreach sort keys %ENV;
print "<hr>n";
my $query = CGI->new();
print "$_ = ", $query->param($_), "
n" foreach sort $query->param();
}
FCGI::CloseSocket($socket);


Но это пример имеет большой недостаток: всего лишь один процесс
FastCGI. На помощь приходит модуль FCGI::ProcManager, который создает
до основного цикла заданное количество потомков, выполняющих всю
полезную работу по обработке запроса:

use FCGI;
use FCGI::ProcManager;
use CGI;
my $proc_manager = FCGI::ProcManager->new({ n_processes => 10 });
my $socket = FCGI:SurprisedpenSocket(":9000", 5);
my $request = FCGI::Request(*STDIN, *STDOUT, *STDERR, %ENV, $socket);
$proc_manager->pm_manage();
my $count = 0; while($request->Accept() >= 0) { $count++; print <<TEXT; Content-Type: text/html
<h1>hello</h1>
$count
<hr> TEXT
print "$_ = $ENV{$_}
n" foreach sort keys %ENV;
print "<hr>n";
my $query = CGI->new();
print "$_ = ", $query->param($_), "
n" foreach sort $query->param();
}
FCGI::CloseSocket($socket);


Кстати, если кто знает ответе: в линуксе до сих про плохо с большим
количеством прослушивающих один сокет процессов и проходится перед
аccept делать монопольную блокировку файла "регулировщика"?

Вернемся к основной теме. В примерах использования FCGI::ProcManager
используется модуль CGI::Fast, используя которых вышеприведенный
вариант можно привести к следующему виду:

BEGIN {
$ENV{FCGI_SOCKET_PATH} = ":9000";
$ENV{FCGI_LISTEN_QUEUE} = 5;
}
use CGI::Fast; use FCGI::ProcManager;
my $proc_manager = FCGI::ProcManager->new({ n_processes => 10 });
$proc_manager->pm_manage();
my $count = 0;
while(my $query = CGI::Fast->new()) {
$count++;
print <<TEXT;
Content-Type: text/html
<h1>hello</h1>
$count
<hr>
TEXT
print "$_ = $ENV{$_}
n" foreach sort keys %ENV;
print "<hr>n";
print "$_ = ", $query->param($_), "
n" foreach sort $query->param(); }


Теперь рассмотрим фрейморки Catalyst и CGI::Application.

Для Catalyst создаем новый проект

catalyst.pl MyApp


и запускаем

myapp_fastcgi.pl -listen=localhost:9000 -nproc=10


Все просто. А вот с CGI::Application немного сложней. Модуль
CGI::Application::FastCGI, как оказалось, предназначен для работы
из-под "пускалки", поэтому используем не его, а непосредственно
FCGI::ProcManager.

BEGIN {
$ENV{FCGI_SOCKET_PATH} = ":9000";
$ENV{FCGI_LISTEN_QUEUE} = 5;
}
use WebApp;
use CGI::Fast;
use FCGI::ProcManager;
my $proc_manager = FCGI::ProcManager->new({ n_processes => 10 });
$proc_manager->pm_manage();
while(my $query = CGI::Fast->new()) {
my $app = WebApp->new(QUERY => $query);
$app->run();
}


Ну вот, с запуском разобрались, теперь посмотрим на использование
памяти в реальных условиях. Как и ожидалось выигрыша по памяти почти
нет, разумеется, когда Apache собран без излишеств.

Так что за nignx можно смело ставить либо mod_perl, либо FastCGI. Это
когда один скрипт. А когда скриптов несколько и они используют
множество общих модулей, то выигрыш варианта с mod_perl очевиден.

Ну вот пожалуй и все.

P.S. Если я где-то ошибся в рассуждения, просьба поправить.
849 Прочтений •  [FastCGI или mod_perl, пример оформления FastCGI скрипта на Perl (perl fastcgi web)] [08.05.2012] [Комментариев: 0]
Добавил: Ukraine Vova
Ссылки
HTML: 
[BB Url]: 
Похожие статьи
Название Добавил Добавлено
• FastCGI или mod_perl, пример оформл... Ukraine Vova 08.05.2012
Ни одного комментария? Будешь первым :).
Пожалуйста, авторизуйтесь для добавления комментария.

Проект входит в сеть сайтов «8Gamers Network»

Все права сохранены. 8Gamers.NET © 2011 - 2025

Статьи
Рецензия на Pressure
Рецензия на Pressure
Чтобы обратить на себя внимание, начинающие маленькие разработчики, как правило, уходят в жанры, ...
Рецензия на Lost Chronicles of Zerzura
Рецензия на Lost Chron...
Игры, сделанные без любви и старания, похожи на воздушный шар – оболочка есть, а внутри пусто. Lo...
Рецензия на The Bridge
Рецензия на The Bridge
«Верх» и «низ» в The Bridge — понятия относительные. Прогуливаясь под аркой, можно запросто перей...
Рецензия на SimCity
Рецензия на SimCity
Когда месяц назад состоялся релиз SimCity, по Сети прокатилось цунами народного гнева – глупые ош...
Рецензия на Strategy & Tactics: World War 2
Рецензия на Strategy &...
Название Strategy & Tactics: World War II вряд ли кому-то знакомо. Зато одного взгляда на ее скри...
Рецензия на игру Scribblenauts Unlimited
Рецензия на игру Scrib...
По сложившейся традиции в информационной карточке игры мы приводим в пример несколько похожих игр...
Рецензия на игру Walking Dead: Survival Instinct, The
Рецензия на игру Walki...
Зомби и продукция-по-лицензии — которые и сами по себе не лучшие представители игровой биосферы —...
Обратная связь | RSS | Донейт | Статистика | Команда | Техническая поддержка