На данный вопрос однозначный ответ дать нельзя, так как Perl в значительной степени отличается от PHP. Язык Perl - разносторонний и мощный интерпретируемый язык, а PHP создавался в основном для работы в интернете. Отсюда следует, что не стоит сравнивать между собой эти два языка.

Факт, что язык PHP легче. При запуске веб-сервера Apache (демона httpd) сразу же подгружается интерпретатор и при запросах к исполняемым скриптам нет лишних и ресурсозатратных загрузок ЦП. Скрипт сразу же выполняется, поэтому и говорят, что язык PHP очень быстр. Если даже при эксплуатации PHP используется дополнительная память (каждый потомок использует модуль php), при большом кол-ве запросов мы получаем явное преимущество в производительности.

Последовательность выполнения скриптов Perl при стандартном подходе выглядит иначе. При запросе такого скрипта, Apache подгружает интерпретатор, а тот выполняет программный код. При этом используется довольно много памяти. Не меньше 2-х мегабайт на каждый отдельный процесс, но обычно 4-6 мегабайт. Отсюда следует, что при каждом обращении к скрипту веб-сервер выполняет загрузку большой программы - интерпретатора. Но это не означает, что скрипты Perl выполняются медленнее. Это говорит о том, что веб-сервер испытывает немалую нагрузку при работе с Perl скриптами.

При большой нагрузке получаем следующее: веб-сервер, выполняющий PHP скрипты, быстрее справляется с запросами и может обрабатывать большее число клиентов. В то время, как веб-сервер с сайтами, построенными на Perl скриптах будет притормаживать.

Эту ситуацию можно просто исправить (mod_perl сразу не понравился, потребляет заметно много памяти и о нем я говорить не стану): на веб-сервер с Perl устанавливается отличный модуль - fast_cgi (подробнее см. на http://fastcgi.com). Используя его, можно существенно снизить нагрузку на веб-сервер, так как скрипт после первого запуска не удаляется из памяти, а ожидает следующий запрос. И скрипт выполняться будет столько времени, сколько потребуется, находясь в памяти. Таким образом, лишней нагрузки на ресурсы веб-сервера не происходит. Данная идея лежит также в основе языка PHP.

Обычные CGI-скрипты отличаются от скриптов FastCGI несколькими строками кода и структурой. К примеру, скрипт при первом запуске соединяется с БД MySQL и, затем, постоянно держит это соединение. Для работы скрипта именно под управлением FastCGI, нужно вызвать FCGI библиотеку. Её легко установить под ОС Unix или Linux.


#!/usr/bin/perl
use FCGI;
my $query = FCGI::Request();

Действия, исполняемые при инициализации
скрипта (к примеру, соединение с базой данных)

while($query->Accept() >= 0)
{

	Главные действия, которые скрипт должен исполнить

}

Действия при завершении (требуется редко)

Выполняя запросы, скрипт как бы проходит по циклу: ожидание - исполнение - ожидание - исполнение. Но на самом деле (под Unix или Linux) это дремлющий процесс, который пребывает в Accept режиме.

Если запросов слишком много, то веб-сервер запускает дополнительную копию процесса. На это уходит ещё некоторое количество памяти, но, в общем, повышает скорость веб-сервера и экономит его ресурсы.

Отсюда следует естественный вывод - кто предпочитает язык PHP, пусть использует php скрипты и не обвиняет Perl язык. Связка Perl + FastCGI - отличный ответ на подобные обвинения. На стадии выполнения программного кода в трудных задачах PHP проигрывает Perl, и побеждает лишь на стадии загрузки. Но приминение FastCGI устраняет это преимущество. Поэтому выбор между этими языками полностью зависит от специфичности решаемой задачи и уровня разработчика. Новичкам язык Perl довольно сложен в освоении, но позволяет решать большой спектр задач, помимо веб-ориентированных. Язык PHP прост в изучении и удобен при разработке различных веб-приложений.

На FastCGI лучше перевести часто исполняемые и большие скрипты. Не все провайдеры хостинга предоставляют поддержку этой технологии. Разогнанный Perl позволяет вести крупные интерактивные сайты на обычном виртуальном хостинге и становится больше провайдеров устанавливающих эту полезную софтину.

Комментарии

captcha
 23 июл. 2013 Ответить

Хорошая статья, всю жизнь писал на perl, а тут начал проект на php. Подтормаживает на одном и том-же сервере.

,  24 авг. 2013 Ответить

Вероятно, PHP код плохо оптимизирован.

 15 сент. 2013 Ответить

Никогда не любил PHP... Я вообще не люблю языки, где можно писать в произвольном регистре. Это как-то сбивает с толку. Потому что записи выглядят по-разному, но надо всё время помнить, что это одно и тоже. Но это субъективный аргумент. Объективные тут изложены. Что касается того, что Perl не для веба, то, по-моему, очень даже для веба, поскольку любая веб-страница это не более чем текст. А Perl изначально разрабатывался как язык для обработки именно текста и даже для печатных форм. А веб-страница - именно печатная форма! Это потом уже Perl стал языком программирования.

Perl лучший язык для веба среди скриптовых. Второй по качеству это python и уж только потом идёт PHP. В конце списка ruby. Но только потому, что ruby ещё не разработан достаточно хорошо. Но у ruby очень хороший интуитивно понятный синтаксис. На нём очень легко писать. Perl же, напротив, имеет очень компактный и для новичков непонятный синтаксис. Но если к нему привыкнуть, то ничего другого не надо!

Самый быстрый это конечно статический HTML, ибо это родной язык браузера. Но у него очень ограниченные возможности. Даже JavaScript их сильно не добавляет. Как-то так изначально не заладилось с HTML. Даже сама идея документа практически не годится для современных веб страниц и с этим приходится бороться. Но, тем не менее, любая веб-страница это всего лишь HTML, неважно какой язык вы используете. Просто его надо как бы напечатать, если его нету изначально. А дальше дело техники.

Но любой скриптовый язык уступит бинарному контексту. Поэтому сейчас уже начинают возвращаться опять на С/С++. Особенно высоконагруженные сайты. Бинарнику ничего не надо, он как бы сам по себе и не требует никакой интерпретации. А поскольку код на этих языках выполняется очень быстро, то страница печатается практически мгновенно. Но с С/С++ другая проблема, на нем нет никаких библиотек для веб разработки и надо всё делать вручную. Но это окупается с троицей... Если же скриптовые языки, то конечно Perl.

 26 окт. 2013 Ответить

Получается, если у нас в организации не используется linux а только windows server то установить библиотеку и убрать зависание скрипта на Perl на большом количестве пользователей не сможем? У нас все преподаватели вводят студентам оценки за задания, и хотя просим в реальном времени вводить, все равно оставляют на последний день последней недели рубежа контроля, бывает зависание в этот день.