Тест Perl между FCGI и PSGI
Что я знаю о протоколе FCGI, так это то, что при первом вызове приложения оно загружается в память, запускает его, возвращает ответ серверу, завершает ответ, но не завершает приложение, оно продолжает работать в памяти, затем следующие запросы будут использовать эту скомпилированную в памяти копию приложения для обработки запроса.
Читая о протоколе PSGI, похоже, он работает так же.
Мой вопрос, верно ли мое предположение, они одинаковы в отношении скорости приложения к запросам в секунду.
сбивающая с толку проблема также, если они работают одинаково, почему я вижу, что в plackup есть опция командной строки для включения FCGI.
1 ответ
Вы просите сравнить яблоки и фрукты. Ваш вопрос не имеет особого смысла.
Существуют различные базовые механизмы, которые вы можете использовать для развертывания веб-приложения, написанного на Perl.
- Это может быть отдельная программа CGI
- Может работать под mod_perl
- Может работать под FcGI
- так далее...
Проблема в том, что для каждого механизма развертывания вам нужно изменить способ написания вашей программы. Это означает, что вам нужно знать, что вы, скажем, нацелены на mod_perl, прежде чем начнете писать код. Это также означает, что перемещение приложения между этими различными методами развертывания нетривиально.
Это проблема, которую решает PSGI. Вместо того чтобы писать приложение CGI, приложение mod_perl или приложение FCGI, вы пишете приложение, предназначенное для протокола PSGI. Вы можете развернуть точно такое же приложение в CGI, mod_perl или FcGI (или во многих других методах развертывания).
Если вы развернете приложение PSGI с помощью обработчика FCGI, то оно будет работать так же, как приложение FCGI. Но позже его легко переместить в приложение mod_perl. Или запустить его как отдельный сервер, используя что-то вроде Starman.
Это помогает вообще?