编译PHP框架

时间:2012-05-14 05:40:22

标签: php orm frameworks kohana

我不想将PHP编译成天真的EXES或者任何类似的东西,只有编译/缓存(这两个词都不能反映我的意思)框架逻辑本身

有没有类似已编译的PHP Framework?

我的意思是以Kohana为例。它是可扩展的,可覆盖的,有趣的等等。但最终加载200个文件以显示一页!

如果你有Controller_Admin extends Controller_Admin_Template extends Controller_Template extends Kohana_Controller_Template extends Controller extends Kohana_Controller,我认为最好的是什么。这不是必需的...如果我们只是将方法体复制到$parent->whatever(),它最终会在一个更好,更小,更快的文件中。

我们已经为JS和CSS做了这件事来减少下载的资产;为什么不是整个框架? :d

此外,我正在寻找可编译的ORM。 Kohana ORM非常......慢......它使用魔术方法,加载表格,通常很有趣,但服务器的...电路很痛苦。 :P

如果我们可以让ORM::factory('test')->compiled()->where('bla','=','1)->execute();在生产服务器中编译成ORMC::factory('test','SELECT * FROM test WHERE bla=1')->execute();,那就太酷了。这适用于除ORM之外的其他一些东西,但ORM会受益匪浅。

在我看来,动态框架的开销似乎并没有因易用性而缩小。有了这个,我们就会失去轻松并加快速度。 ;)

所以我的问题是:这样的事情存在吗?如果没有,我的逻辑是否有缺陷?


编辑:

由于答案失败,我会更直接地展示我想要做的事情。

我们有一个/ application /,其中有没有“编译”的EXACT SAME代码,和/ compiled_app /,其中所有(例如)可以SIMPLIFIED的查询都是SIMPLIFIED(不是对象Query_Builder而是SELECT blablablabla等)。

同样,为一个类添加50个文件会增加很多umm ...覆盖向量? :D这是一个不受控制的100%保证 BOTTLENECK 性能开销。也许它并不多,但它始终存在。它没有必要。

3 个答案:

答案 0 :(得分:1)

PHP是一种解释型语言,不会这样编译。

有一个APC可以动态地将PHP代码编译成Zend引擎执行的字节码并对其进行缓存。这可以获得相当多的性能,但它有缺点和局限性。

老实说,你所要求的听起来很像过早的优化。决定代码运行速度的最大因素是算法的选择。对于相同数量的记录,一百万条记录上的编译冒泡排序仍然比未编译的快速排序慢。 PHP应用程序也倾向于花费大量时间与外部系统(如数据库)进行通信。您无法通过编译PHP来优化此类活动。无论PHP是否编译,花费10秒的查询将花费10秒。

如果您的应用程序遇到性能问题,那么它执行的SQL查询通常是优化时的好地方。许多PHP代码执行太多查询,在循环中执行查询,或查询应用程序随后不执行任何操作的数据。找到并消除这些将使您的应用程序永无止境。

但是,重要的是要注意,您绝不应该通过猜测瓶颈在哪里来优化代码。使用XDebug之类的工具生成运行代码的配置文件,然后分析输出以确定代码中的热点位置。

最重要的是,如果您没有遇到性能问题,那么优化本身就是浪费时间。过早的优化会浪费开发人员的时间,它往往会使源代码的可读性降低,难以维护,并且容易引入错误。只有在经过验证的需求时才进行优化。

答案 1 :(得分:1)

您可以查看Flow3框架和how it works。它不是你想要的,但也许你会发现它很有趣..

答案 2 :(得分:-1)

您可以查看Yaf。它是一个编译为PHP扩展的框架。 你听说过HipHop吗?它可以将整个PHP应用程序编译成一个二进制文件。