一个文件中的动态类定义

时间:2013-07-24 15:41:15

标签: php

我只能有一个php文件。

我只需要在某些场合定义一个类来生成输出。

这样的事情:

if (date("j") == "1") {
    echo "Not today";
    exit;
}

new OutputGenerator();

class OutputGenerator {
    // very large definition (~3500 lines)
}

此代码的问题是PHP处理整个文件并使脚本非常慢。没有类声明,我可以每秒处理~500个请求。根据定义(即使我在定义之前退出),我只得到~50,这是90%的性能下降。

有条件地要求带声明的外部文件可以解决我的问题,但我需要留在这个文件中。

有没有办法(除了使用eval()或需要带定义的外部文件)?

2 个答案:

答案 0 :(得分:1)

php文件的解析时间不应该花那么长时间..我认为问题是OutputGenerator的构造函数在其中进行了一些昂贵的操作。

您可以有条件地创建OutputGenerator的实例以避开此成本。

 if($iNeedAnOutputGenerator){
      $og = new OutputGenerator();
 }

答案 1 :(得分:0)

由于您的脚本非常小,我认为您的性能可以显着降低。你所做的事情都不是非常耗费资源的,所以我可以看到一个大的类定义在这种情况下可能会显示出显着的差异。

最明显的答案是如果解析是个问题,那就是使用操作码缓存。从PHP 5.5开始,这是内置的,但对于之前的任何PHP版本,您应该使用APC extension

即使没有APC,我认为这样一个简单的脚本每秒有50个请求很低,你可能在某个地方遇到完全不同的瓶颈。