PHP或Perl是我的Web项目的正确选择吗?

时间:2009-02-03 17:10:34

标签: php perl web-applications

我期待听到一些关于选择“正确”语言(以及模块?)以实现单人网络项目的建议(仅限LAMP,在留言簿和完全成熟的博客之间的复杂性,为高开发根据这些要求,每天展示50,000次展示次数的流量网站:

  • 输出缓存(想想:Wordpress Super-Cache等),当存在缓存页面时,完全绕过脚本语言。这个非常重要。

  • 网站蜘蛛”模块访问网站并解析HTML,Javascript支持将是一个优势

  • 多媒体文件(mp3,jpg / gif / png,flv / wmv)的面向对象处理,无需为所有内容编写自己的包装

  • 编码原始脚本文件的可能性(二进制文件?)无法轻易被篡改

对于MVC合规性,我已经在研究像Catalyst这样的框架。我唯一的抱怨是,它似乎需要自己的服务器应用程序。也许PHP等价物有更好的方式来启动应用程序......?

回答时,不要只说“PHP / Perl可以做到这一切以及更多”,但请为这些要点提供一些建议。

提前致谢

7 个答案:

答案 0 :(得分:12)

输出缓存:两种语言都有出色的缓存解决方案。

网站蜘蛛:Perl有WWW::Mechanize,这是我见过的最好的模块。

面向对象的多媒体文件处理:Perl在那里具有优势。 CPAN具有适用于各种多媒体文件的模块。 PHP似乎特别缺少对视频格式的支持。

编码:两者都必须可解释才能执行。我知道两者都有混淆它们的解决方案,但也有反混淆工具。我建议放弃它,这主要是让你自己的生活变得更加困难。

P.S。 Catalyst不需要自己的Web服务器,但它确实为development purposes提供了一个特殊的服务器。通常,您可以使用Apache或其他支持Web服务器的FastCGI来部署它。

答案 1 :(得分:8)

我建议将WWW :: Mechanize作为抓取工具使用Gungho代替。

至于缓存,它往往取决于应用程序(除非它只是“缓存此页面10分钟”)。使用MVC Perl应用程序实现它比使用PHP要容易得多。看看我有点聪明的Angerwhale::Cache。你会注意到我在这里交易速度是准确的 - 一个过时的页面永远不会被提供。您可能愿意更自由,如果是这样,您可以从许多请求中删除应用程序。 (例如,每5分钟运行一次更新静态HTML页面。)

答案 2 :(得分:4)

Catalyst可以轻松完成您需要的所有操作。如果正确使用M和V并将C保持在最低限度(由Catalyst社区鼓励),则没有理由不获得所需的可扩展性。

我不知道你的意思是“它似乎需要自己的服务器应用程序”。部署Catalyst应用程序可以像

一样简单
CATALYST_ENGINE=HTTP:Prefork script/myapp_server.pl -p 80

但它显然也支持其他选项。

答案 3 :(得分:4)

使用Perl,您可以使用PAR打包您的应用程序。这可以简化部署并允许使用PAR::Filter modules对其进行模糊处理。还有Apache::PAR将PAR与mod_perl环境集成。

<强>更新 好吧,正如它在网站上所说,PAR是纯perl(不需要C编译),因此您可以将它安装在任何可以编写文件的服务器上。您可以在普通的perl脚本中加载PAR文件中的模块,如下所示:

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

将大部分逻辑放入模块中,并使用简单的启动器脚本从PAR文件中加载它们。

但是,如果您打算构建一个大型,复杂的应用程序,请帮自己一个忙,并获得一个可以让您安装模块或将为您安装它们的主机。另外,使用mod_perl或FastCgi来加速你的应用程序。

GrokThis有好的计划便宜。还有其他好东道主。

答案 4 :(得分:2)

我认为PHP很容易就能应付这样一个项目,比如莱昂表示它对多媒体的支持可能不如perl那么好,但对于剩下的东西它肯定应该是好的。

PHP有很多不同的缓存API和框架,我个人可以推荐CakePHP作为一个非常好的框架,但它非常笨重,定制的解决方案可能会更好。

我使用的PHP中最好的网站蜘蛛是Sphider

不确定在PHP中处理视频和音频文件,但图像ImageMagick非常好。

PHP中的大量内容以及编码检查manual的内容。

答案 5 :(得分:2)

查看PHP的MVC框架SymfonyCake。广泛使用。

但是请记住,50,000次展示听起来很多,但并不是那么多。在您真正开始为并发用户产生大量流量之前,您可能不需要担心缓存。

其他所有内容都被提及了。如果您的服务器被锁定,您的源代码永远不应该被更改 - 所以除非您分发零售应用程序,否则我不明白为什么您需要部署源默认设置。您只需为站点/软件的实施/部署和解释添加更多步骤。

答案 6 :(得分:1)

  • 可以使用PHP源代码混淆 IONCube,但需要相应的 服务器上的模块( NOT 托管型)。
  • 对于Perl,我玩了 几年前使用perl编译器 它创建了Pcode或链接了 带有翻译的来源 独立包装。
  • 您描述的输出缓存听起来像是反向代理。
  • PHP没有电影/音频支持。您应该使用FFMpeg或MEncoder等外部工具来进行后端处理或文件统计。