Я разрабатываю веб-приложение для сервера хостинга Apache. Я уже написал какой-то код в Perl, но недавно я узнал, что, к моему удивлению, хостинг-провайдер не предоставил mod_perl или способ его установки.
Я немного волновался, что запуск веб-приложения Perl через CGI без mod_perl сделает его очень медленным? Должен ли я переключить весь мой код на PHP, будет ли это быстрее?
Причина, по которой я выбрал Perl, в первую очередь, я очень хорошо знаком с Perl, чем PHP. Также я хотел иметь возможность использовать свои библиотеки Perl вне сферы веб-разработки.
Поэтому, если кто-либо из вас имеет опыт работы с веб-разработкой Apache, можете ли вы пролить свет на то, в каком направлении я должен руководствоваться.
Ради этого вопроса, скажем, веб-приложение получит 500 + хитов в день.
Что будет быстрее PHP или Perl без mod_perl?
Заранее спасибо за помощь.
Всего 500 хитов в день, вы можете написать свой код практически во всем и не беспокоиться о замедлении. 500 ударов в день увеличивается примерно до 1 страницы каждые 3 минуты. Даже при условии ненормального распределения хитов вы не должны беспокоиться об этом с такими небольшими номерами трафика.
PHP будет быстрее.
Однако, только с 500 обращений в день, использование cgi не будет проблемой. Даже с 500 хитами в час.
Многое зависит от вашей архитектуры. Современные каркасы Perl не очень подходят для использования в качестве CGI (длительное время запуска). Если вы используете CGI, Catalyst, вероятно, является плохой идеей. Тем не менее, используя классическую архитектуру, он должен быть вполне управляемым.
Если ваш общий хост не запускает PHP как приложение CGI (а не mod_php или FastCGI), PHP почти всегда будет быстрее. Хотя Perl, работающий как CGI, может обрабатывать ваши 500 ударов в день, приложение / страница, разработанная с CGI, будет вялой.
CGI работает, создавая новый процесс для запуска вашей программы для каждого запроса. Оба приложения mod_php и FastCGI смягчают это, создавая множество процессов и затем используя их для запуска вашего приложения. Другими словами, для каждого запроса не создаются новые процессы. (Это упрощенное объяснение, пожалуйста, не используйте в CS Term Paper. Дополнительную информацию см. В документах mod_php и FastCGI)
Скорость не должна беспокоить вас. Оба языка подходят для веб-приложений.
Для объема трафика, на который вы смотрите, Perl с ванильным CGI не должен быть проблемой, хотя я бы предпочел бы более ранние рекомендации, чтобы проверить FastCGI как еще один вариант, который может предоставить ваша служба хостинга.
Или другой вариант – искать другую хостинговую компанию …
Расширяя то, что сказал Алан Шторм , вы, возможно, сможете использовать Perl с FCGI.
FCGI работает, имея своего рода автономный сервер, если вам нравится, который подключается к вашему веб-серверу через протокол FCGI и запросы делегатов / отправлений.
Это быстрее, чем обычный CGI, поскольку это эмулирует своего рода «сервлет» модель, приложение является постоянным, и нет необходимости в новой инициализации для каждого вызова, например, с обычным CGI.
Я еще не научился делать это сам, но я считаю, что Catalyst имеет этот вариант, поэтому его просто нужно изучить, как его реплицировать.
FastCGI / FCGI должен быть доступен на значительно большем количестве хостов, чем простой старый mod_perl, поскольку приложения FCGI не являются специфичными для веб-сервера, а некоторые веб-серверы реализуют PHP через утилиту fcgi.
И я немного экспериментировал с веб-сайтом FCGI, и предварительные тесты говорят, что он может обрабатывать не менее 500 req / s, намного быстрее, чем вышеупомянутые проблемы 500 / day или 500 / hour.
Вы можете взломать поддержку fastcgi в учетной записи хостинга, которая ее не поддерживает. Я скомпилировал библиотеку fastcgi с установочным префиксом, установленным на ту же самую вещь, что и домашний каталог в учетной записи хостинга. Затем я синхронизировал его и установил катализатор для использования небольшого моста cgi-fcgi. Он работал хорошо. Хороший и быстрый, потому что cgi-мост – всего лишь маленький исполняемый файл. Процесс катализатора сохранялся в фоновом режиме очень хорошо.
Ответ в каждом голосе: кто заботится. 500 запросов в день – ничто.
Просто используйте то, что быстрее всего реализовать / поддерживать и двигаться дальше.
Для более легких веб-фреймворков, которые будут работать с использованием CGI, посмотрите на …
Это зависит в основном от того, насколько сложным является ваш код и как он складывается; если вы запустите его как CGI, perl будет скомпилировать ваш скрипт и модули для каждого вызова и будет повторно подключаться к вашей базе данных для каждого запроса. Если ваш код достаточно сложный, это может занять несколько секунд на просмотр страницы, что может помешать работе пользователя.
Если ваша кодовая база и используемые модули не огромны, не должно быть никаких проблем.
Вы можете сделать perl -c на своем коде, чтобы понять, как долго запускается perl и время вашей компиляции.