Quercus是Java环境中PHP的可行替代品吗?

对于那些不知道Quercus是什么的绊到这个问题的人来说 – 它是用Java完成的PHP实现。

对于我目前正在处理的项目,我们通过cgi通过servlet提供php页面(我知道它很笨重,但它是支持遗留代码的要求)。 我很高兴发现了Quercus项目,因为它似乎是将我们的项目转移到更纯粹的Java环境的有希望的途径。

我有几个关于栎属的问题:

  • 你是否在运输产品中使用了Quercus?
  • 支持多少PHP API?
  • 你使用它有什么问题?
  • 你有没有能够使它与Jetty一起工作? 你有没有听说过与Jetty合作? (我无法弄清楚)

我用WordPress进行了测试,性能几乎是普通Apache / PHP下默认WordPress安装的两倍。 哪个还不是那么好。

我们注意到虽然Quercus支持PHP中的curl命令,但它不支持所有curl选项。 所以自动插件下载不起作用。 这不是什么大不了的事,你可以随时下载插件并手动安装它们。 但这是一个红旗,因为我们不知道还有什么可行。 这也意味着Facebook的PHP库无法正常工作(最有可能)。

如果您执行大量数据库连接和调用,您应该会看到该区域的性能大幅提升,因为将使用数据库连接池。

如果您正在编写代码,我会说这是一个非常可行的选择。 支持足够的PHP,如果您发现不起作用的东西,您可以使用支持的其他PHP命令,或者只使用Java命令。

我做了一些评估Quercus的工作,它看起来很有前景,但是没有与我正在进行的项目合作,因为它是基于Symfony的,而且Symfony的reflection性质并没有得到Quercus的良好处理。

我确实尝试了一些使用它的开源PHP项目,发现它有一个相当完整的基于PHP5的API。

您应该能够使用Jetty。 我能够让它与Tomcat一起工作。

您可以将其视为Java应用程序中JSP的替代品。 它的工作方式与JSP的工作方式类似,就是将PHP编译为Java代码,就像将JSP编译为Java代码一样。

我认为使用Jetty的最大缺点是无法预编译PHP代码。

但是,即使您没有将PHP与Java混合,也有很多优点。 如果你把两者混合在一起,你会有更多的优势。

请参阅有关开发人员如何使用Quercus在Google App Engine上运行PHP的链接

注意:GAE不正式支持PHP,但使用Quercus,您现在可以运行它。

PHP的性能只会在专业版的quercus中表现出色。 因为专业版将PHP代码编译为java字节码。 所以它会更快。

但是开源版仍然使用http://en.wikipedia.org/wiki/Resin_Server中所述的PHP解释器

在开放的soruce版本中似乎没有性能提升。

好吧,如果您检查Quercus页面底部的版权,您会看到它在06年之前更新,所以我不保证任何PHP 5.x支持。

但为什么你甚至想要拥有这样的双重开销呢? 你也可以从php运行java 🙂