Невиданный конкурс: рисуем уродов и получаем призы

 В ИНТЕРНЕТЕ

 В Интернете сделают доменную зону для детей
 "Смайлики" заменят дорожные указатели
 Новости от первого лица: все о проекте ProtoPlex
 NoNaMe.Ru: за стеклом
 Видеоролики (тизеры) новых фильмов :)
 Новенькое в скриптах мультипортала
 Новый форум на ПротоПлексе
 Бансток — крупнейший в своём деле…

 WEB-СТРОИТЕЛЬСТВО

 1st Page 2000 – HTML редактор для русских веб-мастеров
 Какими способами можно раскрутить свой сайт
 Как сделать Интернет-магазин?
 Ах, баннеры, баннеры...
 Шустрый хостинг для крупных сайтов
 Голосование на РНР!
 ProtoPlex платит авторам рассылок кредиты
 Секреты HTML - 1
 Что быстрее: Perl или PHP?

 ПРОГРАММЫ

 Проверка системы и сравнение производительности
 Artefact Dictionary 1.53
 WWW Jet Triton 10.11

 УГОЛОК ГЕЙМЕРА

 Civ Evolution - эволюция продолжается
 SimCity4 официально в продаже

 ЮМОР

 Биография одного сайта или записки о веб-матерной жизни...



Что быстрее: Perl или PHP?


Автор Евгений В. Жданов
protoplex@mailru.com
http://protoplex.ru/
Январь 23, 2003
[07:37]

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

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

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

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

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

Простые CGI-скрипты отличаются от FastCGI-скриптов всего несколькими строчками да и структурой. Например, скрипт может при первом запуске соединиться с MySQL и постоянно держать это соединение. Для того, чтобы скрипт работал именно под управлением FastCGI вызывается библиотека FCGI. Она легко ставится под Linux или Unix.
 #!/usr/bin/perl
 use FCGI;
 my $request = FCGI::Request();
 …
 Действия, выполняемые при инициализации
 скрипта (например, коннект к БД)
 …
 while($request->Accept() >= 0)
  {
 …
 Основные действия, которые должен выполнять скрипт
 …
 }
 …
 Действия при завершении (редко нужно)
 …
 

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

Если запросов очень много, то сервер может запустить еще копию процесса. Это жрет некоторое количество памяти, но в целом увеличивает производительность сервера и ведет к экономии ресурсов.

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

Например, РМП ProtoPlex построен на Perl-скриптах. Некоторые из них работают как Fast-CGI, некоторые работают в обычном режиме. Крупные и часто используемые скрипты лучше перевести на FastCGI. Не каждый хостинг-провайдер поддерживает эту технологию. Мне известны только ValueHost и Ди-Нет. На Валуе я хостился раньше, на Ди-Нет - сейчас. Ускоренный Perl дает возможность держать крупные интерактивные сайты на виртуальном хостинге, поэтому все больше провайдеров ставят себе этот полезный софт.

Вся информация, содержащаяся в данном журнале, является интеллектуальной собственностью своих законных авторов. При перепечатке материалов из журнала для соблюдения закона об авторских правах необходимо указывать имена и все ссылки авторов. Также необходимо ставить видимую ссылку на Российский мультипортал ProtoPlex <HTTP://PROTOPLEX.RU>
Система авторегистрации в каталогах, статьи про раскрутку сайтов, web дизайн, flash, photoshop, хостинг, рассылки; форум, баннерная сеть, каталог сайтов, услуги продвижения и рекламы сайтов