Для целей хобби у меня есть общее пространство на сервере хостинга, который предоставляет, как и многие из них, как PHP, так и Perl CGI. Я читал в нескольких местах, что скрипты CGI устарели сейчас, я думаю, что в основном для проблем с производительностью (например, это PHP или ванильный Perl CGI быстрее? ).
Но так как я только начал изучать Perl, я бы не хотел тратить время на реализацию решений на PHP, которые проще (или только возможно) в Perl.
Также есть проблемы с шаблонами, я знаю CPAN (это существование, еще не контент), но не знакомы с библиотеками PHP (хотя я не сомневаюсь, что они существуют). Я не готов писать процедуру входа в систему или базовое администрирование пользователей с нуля в течение 10-10 раз.
Я не роскошь на данный момент тратить много времени на исследования для хобби проектов, так что я думал, давайте попросим экспертов для головы.
«Устаревшая» -ность CGI на самом деле является лишь фактором, если вы делаете большие сложные сайты с большим количеством просмотров страниц.
Многие люди выдвигают идею о том, что CGI устарел, на самом деле не понимают, что такое CGI. Существует распространенное заблуждение о том, что CGI – это технология, основанная на Perl. Многие люди атакуют CGI как способ отбросить культовые атаки на Perl в поддержку любого языка, который они поддерживают. Если вы хотите стать настоящим технологом, вам нужно понять фундаментальные проблемы и сделать выбор, основанный на фактах ситуации.
CGI – это интерфейс с веб-сервером, который позволяет вам писать интерактивные страницы на любом языке – даже befunge . Когда сервер получает запрос на страницу, управляемую сценарием CGI, сервер запускает сценарий и возвращает результаты реквестеру.
Если ваш язык программирования требует, чтобы каждый раз, когда он выполнял загрузку виртуальной машины, интерпретатора или компилятора, это время запуска было необходимо при каждом обращении к вашей странице.
Ускорители CGI, такие как FastCGI, mod_php, mod_perl и т. Д., Постоянно хранят интерпретатор / виртуальную память в памяти, могут поддерживать загрузку библиотек и даже кэшировать байт-код из сценариев, чтобы уменьшить накладные расходы на запуск сценария.
Если вы делаете простой, личный или хобби-сайт, CGI будет в порядке. Так будет PHP.
Если ваш сайт должен расти быстрее, вы можете перейти на mod_perl, FastCGI или другие технологии ускорения CGI.
Какой язык вы используете, должны определяться инструментами, которые он предоставляет, и как они соответствуют вашим потребностям.
Кроме того, я рекомендую не использовать befunge . Просто потому, что это возможно, это не значит, что вы должны его использовать.
Обновление. Как указывает mpeters, mod_perl, mod_php, mod_ruby и т. Д. – это гораздо больше, чем просто ускорители CGI; они обеспечивают доступ к API Apache. Они действуют как ускорители CGI, но могут делать многое, многое, многое другое.
FastCGI – это чистый ускоритель CGI.
Обновление 2: PHP и CGI не являются взаимоисключающими. PHP может быть установлен как CGI . PHP часто используется с FastCGI.
Это довольно субъективная проблема для решения, что использовать для хобби. Я решил изучить Perl как хобби после того, как посмотрел на PHP и не любил тот факт, что я не мог прочитать большую часть PHP там и был лишен списка встроенных функций.
Первые несколько вещей, которые я сделал, это скрипты CGI для контактных форм и генератор фотоальбомов. Я был на дешевом общедоступном хостинговом плане, и у меня не было проблем с производительностью, поэтому проблема с производительностью не вошла в игру.
Вместо этого существование comp.lang.perl.misc и CPAN гарантировало, что я никогда не пересматривал свое решение не вникать в PHP.
Между тем, я понял, что большая часть контента на моих веб-сайтах статична после создания, поэтому теперь я пишу сценарии Perl для создания контента в автономном режиме.
Итак, мой ответ: выберите небольшой проект, что-нибудь сделаете и реализуйте его с помощью Perl и соответствующих модулей CPAN и посмотрите, нравится ли вам это.
Если вы используете PHP или Perl является спорным с точки зрения масштабирования гораздо таким образом, что разница между веб-приложение написано в PHP и C является спорным. Если различие действительно имело значение, мы все будем писать C или сборку.
PHP медленный, но это не останавливает использование Wikipedia, Facebook и Yahoo.
Есть две основные причины: неважно, с точки зрения масштабирования, какой язык вы выберете:
Выберите язык, который вы и ваша команда можете разработать наиболее эффективно.
Вот простой пример «привет мир», который работает под CGI, используя веб-микрофрейм Squatting :
use strict; use warnings; { package MyApp; use base 'Squatting'; use base 'Squatting::On::CGI'; } { package MyApp::Controllers; use Squatting ':controllers'; our @C = ( C( Index => [ '/' ], get => sub { my ( $self ) = @_; my $v = $self->v; $v->{say} = 'hello world!'; $self->render( 'hello' ); }, ), ); } { package MyApp::Views; use Squatting ':views'; use HTML::AsSubs; our @V = ( V( 'html', layout => sub { my ( $self, $v, @yield ) = @_; html ( head ( title( 'My CGI App' ) ), body ( @yield ), )->as_HTML; }, hello => sub { my ( $self, $v ) = @_; p ( $v->{say} ); }, ), ); } use CGI; my $q = CGI->new; MyApp->init; MyApp->relocate('/cgi-bin/myapp.cgi'); MyApp->cgi($q);
Сохраните как «myapp.cgi» и поместите в свой cgi-bin.
Я использую как Perl, так и PHP для сайтов – по историческим причинам, главным образом Perl на работе и PHP дома; Я не думаю, что есть много выбора между ними.
Если ваши страницы в основном фиксированы HTML с небольшим количеством вычислений, PHP немного проще, потому что он все же встроен в HTML.
Я считаю PHP более дисциплинированным и, следовательно, иногда более ограниченным, языком, чем Perl. PEAR очень похож на CPAN – я думаю, не такой большой, но тогда CPAN настолько велик, что в нем много шлаков.
НТН
Colin
Если вы используете хостинг, во многих случаях PHP будет запущен как CGI. Если вы не хотите запускать FastCGI или mod_perl, вы можете использовать CGI :: Application framework . CGI :: Приложение будет работать с FastCGI или mod_perl, но в отличие от Catalyst будет работать как CGI. Оба Catalyst и CGI :: Application также могут запускаться со своими собственными веб-серверами.
У обоих PHP и Perl есть свои моменты, но это действительно субъективно. Perl имеет массивные рамки, доступные на CPAN, которые могут заставить его работать, или лучше, чем PHP, даже в чисто CGI-среде. В то же время PHP имеет большое количество и тонну функций, которые делают сайт простым. Выбор, для меня, сводится к личным предпочтениям. Я лично предпочитаю использовать Perl, а не гадать, пытаясь найти все функциональные способы делать что-то в PHP. Удачи!
Попробуйте Catalyst с Template Toolkit .
sub hello :Path('/hello') :Args(0) { my ( $self, $c ) = @_; # Hello World $c->response->body( $c->welcome_message ); }
<! DOCTYPE HTML PUBLIC "- // W3C // DTD HTML 4.01 Strict // EN"> <HTML> <Голова> <title> [% title%] </ title> </ HEAD> <Тело> <div id = "header"> <a href="/index.html" class="logo" alt="Home Page"> </a> <h1 class = "headline"> [% title%] </ h1> </ DIV> [% content%] <div id = "footer"> <div id = "copyright"> & Копировать; [% Авторские права %] </ DIV> </ DIV> </ Body> </ Html>