1

我只能有一个 php 文件。

我只需要在某些情况下定义一个类来生成输出。

像这样的东西:

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

new OutputGenerator();

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

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

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

有没有办法(除了使用 eval() 或需要带有定义的外部文件)来做到这一点?

4

2 回答 2

1

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

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

 if($iNeedAnOutputGenerator){
      $og = new OutputGenerator();
 }
于 2013-07-24T15:49:31.323 回答
0

由于您的脚本非常少,因此我认为您的性能会显着降低。您所做的任何事情都不是资源密集型的,因此我可以看到在这种情况下,大型类定义可能会显示出明显的差异。

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

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

于 2013-07-24T16:00:36.057 回答