Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
use CGI::Stateless;
sub {
my $env = shift;
local *STDIN; open STDIN, '<', $env->{'psgi.input'};
local %ENV = %{$env};
local $CGI::Q = new CGI::Stateless;
[200, ['Content-Type' => 'text/plain'], ['Hi, ' . CGI::param('name')]]
}функцией param()
чтением/установке кукисов — что делает обычно менеджер сессий и что непонятно как делает PSGI
Отделять бизнес-логику от взаимодействия с сервером позволяет Catalist
CGI интерфейс задаётся браузером
plackup --server Coro --port 9090 --host 127.0.0.1 test.psgiplackup --server FCGI --nproc 4 app.psgi# тут код инициализации
# ...
sub {
# тут то что будет исполняться воркерами
}
По сути своей PSGI похож на AnyEvent и предназначен для тех же целей.
вам и AnyEvent не нуженВы меня не правильно поняли. Не «не нужен» — я считаю что использование AnyEvent — это плохая идея. Как я уже писал в том комментарии, мы тестировали все доступные на тот момент реализации event loop. На простых задачах они все работают одинаково, и разница только в удобстве интерфейсов и количестве и качестве кода в реализации модуля. Но под высокой нагрузкой и/или при длительной активной работе у всех event loop, кроме EV, всплывали серьёзные проблемы, такие как: потеря событий, низкая производительной, memory leaks, и segfault-ы. Простите, но я не могу рекомендовать использование таких модулей. Это звучит несколько высокопарно, и я это уже писал в том комментарии, но event loop это действительно сердце event-ориентированных приложений, и он обязан работать как часы. А использование AnyEvent, с моей точки зрения, это и есть рекомендация использовать любые event loop, а не тот единственный, который надёжно работает.
PSGI — интерфейс между web-серверами и web-приложениями на perl