编译PHP框架

编译PHP框架,php,orm,frameworks,kohana,Php,Orm,Frameworks,Kohana,我不想将PHP编译成原生EXE或类似的东西,只想编译/缓存(这两个词都不反映我的意思)框架逻辑本身 有类似于编译的PHP框架的东西吗 我的意思是以科哈纳为例。它是可扩展的,可重写的,有趣的,等等。但它最终加载了200个文件来显示一个页面 我认为最好的方法是,如果你有Controller\u Admin extends Controller\u Admin\u Template extends Controller\u Template extends Kohana\u Controller\u

我不想将PHP编译成原生EXE或类似的东西,只想编译/缓存(这两个词都不反映我的意思)框架逻辑本身

有类似于编译的PHP框架的东西吗

我的意思是以科哈纳为例。它是可扩展的,可重写的,有趣的,等等。但它最终加载了200个文件来显示一个页面

我认为最好的方法是,如果你有
Controller\u Admin extends Controller\u Admin\u Template extends Controller\u Template extends Kohana\u Controller\u Template extends Controller extends Kohana\u Controller
。这是不需要的。。。如果我们只是将方法主体复制粘贴到
$parent->whatever()
,它将最终形成一个漂亮、更小、更快的文件

我们已经为JS和CSS做了这项工作,以尽量减少下载的资产;为什么不是整个框架D

我也在寻找一个可编译的ORM。科哈纳ORM非常。。。慢。。。它使用神奇的方法,加载表格,通常是有趣的工作,但痛苦的是。。。服务器的电路:P

如果我们能使
ORM::factory('test')->compiled()->where('bla','=','1)->execute()编译成
ORMC::factory('test','SELECT*fromtest其中bla=1')->execute()
在生产服务器中,这会很酷。这适用于除ORM之外的许多其他东西,但ORM将受益匪浅

在我看来,动态框架的开销似乎并没有因为易用性而变得更大。这样一来,我们就不会感到轻松,也会大大加快速度

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


编辑:

因为答案不合格,我会更直接地展示我想做的事情

我们有一个/application/,其中的代码与没有“编译”的代码完全相同,还有一个/compiled_app/,其中所有(例如)可以简化的查询都被简化(不是object Query_Builder,而是
SELECT bla
等)

同样,一个类有50个文件也会增加很多。。。覆盖向量?:D这是一个不必要的100%保证瓶颈性能开销。也许不多,但它总是在那里。而且它不一定非得如此。

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

PHP是一种解释性语言,不进行编译

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

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

如果您的应用程序存在性能问题,那么在进行优化时,它执行的SQL查询通常是一个很好的起点。许多PHP代码执行过多的查询、循环执行查询,或者查询应用程序随后不处理的数据。找到并消除这些问题将使您的应用程序无止境地加速

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


最重要的是,如果您没有出现性能问题,那么为自己而优化是浪费时间。过早的优化浪费了开发人员的时间,它往往会使源代码可读性降低,更难维护,并且有引入bug的趋势。只有在证明需要时才进行优化

您可以检查框架和。这并不是你真正想要的,但也许你会发现它很有趣。

我不知道Kohana,但大多数(好的)PHP框架,如Symfony和ZF,都会缓存它们的东西。否则他们就不会那么快了。通过经验和阅读其他人的文章,我了解到这是PHP编译的方式你可以尝试一下HipHop,但它有点奇怪,并且不像PHP的官方版本那样工作(缺少和有缺陷的函数,等等)。我需要将框架从PHP编译到PHP,将查询生成器之类的动态内容编译成一个字符串,而不是以同样的方式每天执行10000000次的无用方法。我知道嘻哈音乐和其他东西。你显然不明白答案