利用C ++加速PHP

时间:2010-04-10 08:34:44

标签: php c++

我在Sitepoint上看到这篇帖子引用了Rasmus Lerdorf的一份声明(根据Sitepoint),如下:

  

如何快速制作PHP?嗯,你不能“是他的快速答案.PHP根本不够快,不能扩展到雅虎级别.PHP从来没有用于那些类型的任务。”任何基于脚本的语言都不够快“。为了获得速度这对于真正庞大的Web系统来说是必要的,你必须使用已编译的C ++扩展来获得真正的,可扩展的体系结构。这就是雅虎所做的事情以及许多其他PHP重量级人物。

对该声明感兴趣(更不用说到目前为止,我在PHP中所做的一切都是基于数据库的小型应用程序),我想知道如何使用PHP“使用已编译的C ++扩展”。

任何想法或资源?

7 个答案:

答案 0 :(得分:16)

甚至不打扰。 PHP ...您可以创建C ++和PHP的混合体,但是您需要进行大量的分析以了解什么是缓慢的。这主要是...... PHP。

见以下内容:

首先用C ++编写。它就像在PHP中编写现代C ++ Web框架和C ++知识一样简单。

从哪里开始:

  • CppCMS - 面向性能的可扩展MVC框架。
  • Wt - 模仿Qt for web的框架(不确定它如何扩展)。

答案 1 :(得分:6)

慢是主观术语。 Facebook(在线最大的网站)建立在PHP之上,我从未听过他们的抱怨。相反,在他们追求速度的过程中,开发和最近发布的HipHop如果您要使用超高速PHP,这是您应该关注的地方。 C ++ for web是不切实际的,因为它需要编译,它会减慢开发过程。

由于: Why are so many web languages interpreted rather than compiled?

http://www.bitsandbuzz.com/article/compiled-web-vs-interpreted-web/

答案 2 :(得分:4)

瓶颈通常是I / O或数据库查询,而不是您正在使用的语言。

答案 3 :(得分:3)

首先要考虑的问题是:您是否为每小时处理超过一百万次点击的网站开发?因为如果没有,那么你在软件开发中的成本是全部,通过调整当前的PHP代码并添加硬件而不是将部分代码库迁移到C或C ++,你将获得更大的收益。

另请参阅http://shootout.alioth.debian.org/,注意代码大小的比较。

是的,超过这个级别(大约),那么你的硬件成本开始升级到值得用编译语言进行开发的额外努力。

接下来要记住的是,虽然编写良好的编译代码几乎总能胜过编写良好的解释代码,但当代码质量甚至略逊于完美时,差异会减少 - 而且效果将根据语言和程序员的能力而有所不同。我目前正在寻找一个用Java编写的专门开发的Web应用程序(它作为本机代码运行),它需要两倍的硬件资源才能比我管理的类似系统运行得慢,程序员用PHP编写,可能最好描述为广泛的技能水平。虽然这与大多数程序员所认为的常识相矛盾,但我有信心说解释/编译的论证不是唯一的。有许多orgranisations /个人仍然在发展解释的langaues,例如Groovy,Apex。

下进行。

答案 4 :(得分:2)

有一篇关于在http://devzone.zend.com/article/1021编写php扩展的介绍(2005年发布,可能有点过时)。
您还可以使用swig之类的工具为现有的C / C ++代码构建包装器。

答案 5 :(得分:1)

感谢Artyom链接到这个信息链接,

http://idleprocess.wordpress.com/2009/11/24/presentation-summary-high-performance-at-massive-scale-lessons-learned-at-facebook/

其中说“C ++互操作性挑战”。

C ++需要付出很多努力来编写网站。为什么不在C ++和PHP之间选择一种语言,比如用字节码JIT执行的Python,我理解它相对容易被C ++扩展。

答案 6 :(得分:0)

对于大型计算和处理,C ++可以与php一起使用。而对于较轻的过程,只有PHP就足够了。

在处理基于数据处理或计算的应用程序时,C ++可以提供帮助。请不要在这里使用一个技巧。

需要创建服务器(守护程序)进程,以保持请求的内部。此守护程序进程已编译,并包含处理代码。

因此,当有任何处理数据的请求时,它会比PHP快得多,并回复结果。

可以使用exec或类似函数来执行守护程序可执行文件。