我正在为Apache共享托管服务器开发一个Web应用程序.我已经在Perl中编写了一些代码,但我最近发现,令我惊讶的是,共享托管服务提供商没有提供mod_perl或安装它的方法.
我有点担心通过CGI运行Perl Web应用程序而没有mod_perl会让它变得非常慢?我应该将所有代码切换到PHP,那会更快吗?
我之所以选择Perl,是因为我对Perl非常熟悉而不是PHP.此外,我希望能够在Web开发领域之外使用我的Perl库.
因此,如果您对Apache Web开发有经验,那么您是否可以了解我应该采取哪些方向.
为了这个问题,让我们说Web应用程序每天会有500多次点击.
如果没有mod_perl,PHP或Perl会更快?
在此先感谢您的帮助.
每天只有500次点击,您可以编写任何代码,而不必担心减速.每天500次点击每3分钟平均约1页.即使假设非正常的点击分布,你也不应该因为这么小的流量而担心这个问题.
PHP会更快.
但是,每天只有500次点击,使用cgi不会有问题.即使每小时有500次点击也没有.
除非你的共享主机运行PHP作为一个CGI应用程序(不mod_php的或快速),PHP几乎是1总是会更快.虽然作为CGI运行的Perl可能每天可以处理你的500次点击,但使用CGI开发的应用程序/页面将会变得迟缓.
CGI通过生成一个新进程来为每个请求运行程序.mod_php和FastCGI应用程序都通过生成一组进程然后使用它们来运行您的应用程序来缓解这种情况.换句话说,没有为每个请求生成新进程.(这是一个过于简单的解释,请不要在CS学期论文中使用.有关更多信息,请参阅mod_php和FastCGI文档)
你可以提出它不会的病态例子,但是你会成为那种提出事物的病态例子的人,没有人想要那样的
很大程度上取决于您的架构.现代Perl框架不适合用作CGI(长启动时间).如果你使用CGI,Catalyst可能是个坏主意.也就是说,使用经典架构它应该是非常易于管理的.
速度不应该是你关注的问题.这两种语言都适用于Web应用程序.
扩展Alan Storm所说的内容,您可以将Perl与FCGI结合使用.
FCGI的工作原理是拥有一种独立的服务器,如果您愿意,它可以通过FCGI协议与您的Web服务器连接,并委托/分派请求.
这比普通的CGI更快,因为它模拟了一种"servlet"模型,应用程序是持久的,并且不需要像普通CGI那样在每个调用上进行新的初始化.
我自己还没有学会如何做到这一点,但我相信Catalyst有这个选项,所以它只是学习如何复制它的问题.
FastCGI/FCGI应该在比普通的mod_perl更多的主机上可用,因为FCGI应用程序不是特定于Web服务器的,并且一些Web服务器通过fcgi实用程序实现PHP.
我已经尝试了FCGI webserving一点,并且初步测试表明它可以处理至少500 req/s,远远快于500 /天或500 /小时的上述问题.
对于您正在查看的流量,Perl with vanilla CGI应该不是问题,尽管我会先推荐将FastCGI作为您的托管服务可能提供的另一个选项.
或者另一种选择是寻找不同的托管公司......