Является ли PHP или Perl правильным выбором для моего веб-проекта? - PullRequest
3 голосов
/ 03 февраля 2009

Я с нетерпением жду предложений по выбору «правильного» языка (и модулей?) Для реализации веб-проекта с 1 человеком (только LAMP, сложность где-то между гостевой книгой и полноценным блогом, разработанная для трафик сайтов с 50 000+ показов в день) исходя из следующих требований:

  • Кэш вывода (подумайте: Wordpress Super-Cache и др.), Полностью обходя язык сценариев при наличии кэшированной страницы. Это действительно важно.

  • " Веб-паук " модуль для посещения веб-сайтов и анализа HTML, поддержка Javascript будет преимуществом

  • Объектно-ориентированная обработка мультимедийных файлов (mp3, jpg / gif / png, flv / wmv) без написания собственных оболочек для всего

  • Возможность кодировать необработанные файлы сценариев в нечто (двоичное?), Которое не может быть легко изменено с

Для соответствия MVC я уже изучаю фреймворки, такие как Catalyst. Единственное, что я прочитал, так это то, что для этого требуется собственное серверное приложение. Возможно, у эквивалентов PHP есть лучший способ запуска приложений ...?

При ответе не просто говорите: «PHP / Perl может сделать все это и многое другое», но, пожалуйста, предоставьте небольшую рекомендацию для каждого из этих пунктов.

Заранее спасибо

Ответы [ 7 ]

12 голосов
/ 03 февраля 2009

Кэш вывода: оба языка имеют отличные решения для кэширования.

Сайт-паук: Perl имеет WWW :: Mechanize , лучший такой модуль, который я когда-либо видел.

Объектно-ориентированная обработка мультимедийных файлов: у Perl есть преимущество. CPAN имеет модули для всех видов мультимедийных файлов. В PHP отсутствует поддержка форматов видео, в частности.

Кодировка: оба должны быть интерпретируемыми для выполнения. Я знаю, что у обоих есть решения для их запутывания, но есть и инструменты для удаления запутывания. Я бы порекомендовал просто отказаться от этого, это в основном делает вашу собственную жизнь более сложной.

P.S. Catalyst не нужен собственный веб-сервер, хотя он предлагает специальный сервер для разработки . Обычно вы развертываете его, используя Apache или другой веб-сервер, поддерживающий FastCGI.

8 голосов
/ 04 февраля 2009

Я бы порекомендовал против WWW :: Mechanize в качестве гусеничного робота и вместо него использовал бы Gungho .

Что касается кеширования, оно, как правило, зависит от приложения (если только это не просто «кеширование этой страницы в течение 10 минут»). Вам будет намного проще реализовать его с помощью Perl-приложения MVC, чем с PHP. Взгляните на мой несколько умный Angerwhale :: Cache . Вы заметите, что я обмениваю скорость на точность здесь - устаревшая страница не будет никогда обслуживаться. Возможно, вы захотите быть более либеральным, и если это так, вы можете исключить приложение из множества запросов. (Например, запускать что-то каждые 5 минут для обновления статических HTML-страниц.)

4 голосов
/ 04 февраля 2009

С Perl вы можете использовать PAR для упаковки вашего приложения. Это может упростить развертывание и позволяет использовать PAR :: Filter modules для его маскировки. Существует также Apache :: PAR для интеграции PAR со средой mod_perl.

Обновление: Ну, как говорится на веб-сайте, PAR является чисто Perl (компиляция C не требуется), поэтому вы можете установить его на любой сервер, на который вы можете записывать файлы. Вы можете загружать модули из файла PAR в свои обычные сценарии Perl, например:

 use PAR;
 use lib "foo.par";             # the .par part is optional
 use Hello;                     # module from the par file.

Поместите основную часть вашей логики в свои модули и используйте простой скрипт запуска, чтобы загрузить их из файла PAR.

Но, если вы планируете создать большое сложное приложение, сделайте себе одолжение и получите хост, который либо позволит вам установить модули, либо установит их для вас. Также используйте mod_perl или FastCgi для ускорения работы вашего приложения.

GrokThis имеет хорошие планы дешево. Есть и другие хорошие хозяева.

4 голосов
/ 04 февраля 2009

Catalyst легко сделает все, что вам нужно. Если вы правильно используете M и V и держите C на минимальном уровне (как это поощряется сообществом Catalyst), у вас нет причин отказываться от требуемой масштабируемости.

Я не знаю, что вы подразумеваете под "кажется, что требует своего собственного серверного приложения". Развертывание приложения Catalyst может быть простым, как

CATALYST_ENGINE=HTTP:Prefork script/myapp_server.pl -p 80

но, очевидно, поддерживает и другие опции.

2 голосов
/ 04 февраля 2009

Ознакомьтесь с платформой MVC Symfony и Cake для PHP. Широко используется.

Однако имейте в виду, что 50 000 показов звучат как много, но это не так уж много. Возможно, вам не нужно беспокоиться о кэшировании, пока вы действительно не начнете генерировать интенсивный трафик с одновременными пользователями.

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

2 голосов
/ 03 февраля 2009

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

Множество различных API-интерфейсов кэширования и фреймворков для PHP, лично я мог бы порекомендовать CakePHP как очень хорошую фреймворк, однако он довольно громоздкий, и индивидуальное решение может быть лучше.

Лучший веб-паук в PHP, который я использовал, это Sphider .

Не уверен насчет обработки видео и аудио файлов в PHP, но для изображений ImageMagick очень хорошо.

Многое в php, а также для кодирования, посмотрите руководство для этого.

1 голос
/ 04 февраля 2009
  • Обфускацию исходного кода PHP можно выполнить с помощью IONCube, но для этого нужен соответствующий модуль на сервере (который НЕ хостинг-дружественный).
  • Для Perl я играл несколько лет назад с компиляторами Perl который создал Pcode или связал источники с переводчиком в автономный пакет.
  • Кэш вывода, который вы описываете, звучит как обратный прокси.
  • В PHP нет поддержки видео / аудио. Вам следует прибегнуть к внешним инструментам, таким как FFMpeg или MEncoder, чтобы выполнить внутреннюю обработку или статистику файла.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...