我应该在这个项目中使用Perl或PHP或其他东西吗?

时间:2010-03-29 14:47:06

标签: php xml perl web-services

我即将开始一个需要的项目:

  • 处理XML
  • 非xml文档的重文本解析
  • 将xml和非xml文档中的数据插入关系数据库。
  • 使用网页从db向用户显示已处理的数据。
  • 必须很好地处理负荷。

该网站将受到短期非常重的页面(每分钟300多名访客,持续几分钟),但大部分时间都是闲置的(每分钟十几位访客)。

我在Java和Web服务方面有很强的背景,但我不想在这个项目中使用Java,因为我想让我的技能多样化。

我不是在考虑你认为哪种语言最好的意见。使用这些语言有哪些优点和缺点,您可能会从自己的经历中认识到这些?

13 个答案:

答案 0 :(得分:9)

我会选择Perl。 LibXML系列模块提供了由快速C解析器支持的各种接口(DOM,XPath,XSLT等)。

Perl对切片和切块文本的正则表达式支持几乎是其他语言无法比拟的。如果您希望进行大量的任意文本处理,并且至少对正则表达式有所了解,那么您将会感谢自己。

Perl还有一系列优秀的Web框架,包括简单但功能强大的Mojolicious框架和全面的Catalyst框架。总是存在古老而稳定的CGI库,但Mojolicious或Catalyst可能是更好的选择。

答案 1 :(得分:8)

因为我是一个PHP人,所以我可以提供关于PHP的内容

因此,PHP会满足您对问题语言的要求。

但是,Perl,Python或Ruby甚至ServerSide JavaScript(...)都应该能够满足您的要求。 PHP有它的怪癖,其他语言也是如此。如果你是一个Java Guy,你可能会喜欢Ruby的语法,但话说回来,只有你可以决定。

答案 2 :(得分:7)

因此,列表中的每个项目都可以使用两种语言完成。考虑到自己的优点和缺点,你应该选择一个你认为能让你最有成效的那个。

答案 3 :(得分:5)

这确实是一个非常主观的问题。我完全可以想到,在2010年,Perl或PHP(甚至Python或Ruby)可以同样为您提供此类项目。差异不是来自语言本身,而是来自工具,最佳实践和社区。

在这些语言中,我最熟悉Perl,所以让我尝试从这个角度提供一个关于你需求的答案。

文本和XML解析: Perl非常强大地支持甚至很长文件的文本解析(只要你don't slurp),并且允许强大,清晰和简单{{3 }}。它有明确的内置regex programming和标准的反编码工具(Unicode support模块),在用户界面方面非常非常方便。它还以标准,快速且维护良好的模块形式直接绑定Encodelibxml2

关系数据库支持:除了允许对大量DBMS进行直接SQL查询的标准数据库接口(XML::LibXML)之外,还有许多框架可以使DB-to -Webdoc管理更轻松,同时功能强大。最着名的可能是DBI

HTML文档演示文稿: Catalyst是我最喜欢的Web应用程序交付引擎。与Perl的集成是所以优雅,但它不会牺牲模板模式或语言功能。

重负载处理:解决方案存在尽可能多的解决方案。 Perl为Mason提供绑定:memcached(用Perl编写)和Cache::Memcached(用C语言编写)。

与您的语法和一般语言哲学的个人偏好相平衡,您很快就可以加入Cache::Memcached::Fast社区:)

答案 4 :(得分:4)

看来你的大部分工作都是处理数据而不是演示,在我看来这是Perl最擅长的。 Perl在正则表达式上表现非常出色,CPAN上的大量模块可以帮助您解析常见格式。 Perl中还有一些很好的框架可以使数据的呈现更加轻松。新手的主要缺点是,对于您可能遇到的各种问题(XML解析,Web框架,ORM等),CPAN上有数十个发行版,因此很难决定使用哪一个。感谢Plack / PSGI,最近与Perl的网络服务器谈话已经变得更好了。

重要的是“加载”是一个完全与语言无关的问题,因此它不是您选择的语言,它是您设计系统的方式,它将决定它如何处理增加的负载。 Perl,Java,PHP已经全部用于小型设置,一直到网络上一些流量最大的网站。如果增长符合您的未来需求,请在适当的时候进行分离,并首先为未来扩展进行设计。多个数据库服务器,缓存,消息/工作队列可以小规模使用,并且当事情很小时将它们放入比在需要更多资源时重写或快速破解它们更容易。

答案 5 :(得分:1)

与选择语言相比,您的体系结构和算法对速度和可伸缩性的影响更大。

Perl,PHP或Java都将完成这项工作。

我在Perl中这样做,因为我很了解它并且更喜欢PHP(我也很熟悉)。你的里程会有所不同。

答案 6 :(得分:0)

所有提到的语言都应该可用于您的目的。但据我所知,PHP对于UTF8字符串可能有点棘手(例如,为UTF8字符获取正确的字符串长度,其中包含多个字节)。但我相信有些人会很快通过评论为PHP提供良好的解决方案: - )

我个人最喜欢的是Ruby。因为它为您的所有需求提供了非常简单和强大的API(所谓的宝石)。

答案 7 :(得分:0)

据我所知,PHP的正则表达式(我假设你将使用它)PCRE library来自Perl。因此,如果您有很多非XML解析,那么您需要测试两者并查看哪一个运行得更快。我不确定哪一个对你来说更快。

他们都很好地处理XML(最后)。

然而,PHP只是一个庞大的社区。这个星球上没有其他脚本语言那么大。因此,如果这对您很重要,那么请使用PHP,因为您可以找到关于它的所有内容。

然而,Perl也有很多关注者,我确信有很多教程可以帮助您完成所有工作。

Python也是您可能想要研究的语言。哎呀,因为每个人都意识到Ruby是上帝给世界的礼物,它也爆炸了!你可以用任何语言做你想做的事情,所以你需要看看每个语言的语法,找出你最喜欢哪一个。从那里,您可以在每个基础上运行一个简单的示例基准,以查看哪种语言对您来说最快。

无论你做什么 - 不要使用像wordpress或drupal这样的“框架”。它们是CMS不是框架,而且非常缓慢和臃肿。 Wordpress只需8MB即可加载索引页面!

我们有一个PHP项目,一个来自Java的Guy加入了我们,一旦他掌握了这个项目,就在一两个星期内启动并运行。

答案 8 :(得分:0)

为什么不试试Ruby on Rails?

回到你的问题,我会说PHP。既然你需要学习新东西,同时你应该有一个很棒的社区,在那里你可以找到支持。

PHP完成您所要求的所有内容。

答案 9 :(得分:0)

我会使用Common Lisp。

  • Closure XML用于解析XML
  • cl-ppcre是一个与perl兼容的正则表达式库,但根据您要解析的文本类型,您可以在Common Lisp Directory找到专门的解析器。
  • 我不知道您想要使用哪个数据库,但Postmodern对Postgres非常好。还有更通用的CLSQL
  • 您可以使用Hunchentoot作为网络服务器,例如CL-WHO来制作HTML网页。每秒5页应该没问题。

答案 10 :(得分:0)

使用Perl,如果您没有经验,那么您的目标是让自己更有市场。

如果您需要在“专业经验”部分中保护这两个条目,那么伪造PHP体验要容易得多。

答案 11 :(得分:-1)

根据您的需要,您可能需要考虑一个已经支持缓存的框架,Drupal就是一个例子,但还有很多其他例子。大多数框架都是可扩展的,因此您可以添加插件来处理所有解析和演示。

我认为语言不如您选择的框架重要。我个人会选择PHP而不是Perl,因为我认为它更适用于现实世界。 Python是另一种漂亮的脚本语言,但是php在网络世界中具有最大的吸引力。如果您的目标是让您的技能更具市场价值,请使用PHP。

答案 12 :(得分:-4)

好的,所以每个人在答案中都是主观的我也会加入我的。

使用Java,核心支持你需要的所有东西(不需要框架),它的免费操作系统和它比Perl - PHP快2到3倍。

...严重 PHP是专为Web项目设计的,它很简单,并且支持您需要做的所有事情(尝试Zend框架),它有一个不错的学习曲线(Java更难学习),有一个庞大的开发人员社区如果你遇到意想不到的事情(比Pearl和Java更大),帮助你。在性能上,它比珍珠慢一点(我在谈论普通的PHP脚本,没有wierd-vodoo优化),但它足以满足您的需求。

最后,我非常确定如果您使用PHP(并遵循所有编码和设计最佳实践),您将获得一个更小的一致性应用程序,而不是使用Perl。

(Java更好......但我不想被某些PHP狂热者私下诽谤)