装载模型&图书馆需要太长时间

时间:2013-03-08 10:35:39

标签: php codeigniter codeigniter-2

我一直在Codeigniter上构建一个大型社交应用程序。 有一个功能可以加载4个型号和1个库(5个资源)然后执行一些PHP逻辑&数据库插入/选择等。这5个资源是特定于此功能的,并且不经常需要,因此无法自动加载。

function abc(){

  log_message('error' , 'block 1'.date('Y-m-d H:i:s'));

  $this->load->model('model1');
  $this->load->model('model2');
  $this->load->model('model3');
  $this->load->model('model4');
  $this->load->library('lib1');

  log_message('error' , 'block 2'.date('Y-m-d H:i:s'));
  // Some DB queries performed here

  if(){
     // Some PHP code
  }else{
    // Some PHP code
  }

 // Some DB queries performed here

 log_message('error' , 'block 3'.date('Y-m-d H:i:s'));
}

通过使用Codeigniter的分析类,我发现整个函数需要大约8秒才能执行,而其中的数据库查询只需要1秒钟。 在我的代码中的许多点之后的记录时间,我发现在8秒内,大约6.5秒用于加载那些库和&模型,而代码处理只需1秒钟。

通过对我的函数进行性能分析并以特定的时间间隔记录时间戳,我发现我的总函数abc需要8秒才能执行。但是块1和块之间的时间差异。块2是7秒,而块2和块3之间的时间差仅为1秒。所以至少我知道它的加载资源需要花费很多时间而且我不知道为什么:(

8秒的功能执行是不可接受的,我无法想出解决方案。请帮忙......

该网站托管在具有512 MB RAM的DigitalOcean云上,只有2个用户对其进行测试。我是否需要增加RAM来实现这一目标。如何加快加载时间......

1 个答案:

答案 0 :(得分:0)

很难说“你怎么能加快加载时间”而无需检查你的lib和m odels代码,无论如何你应该能够测试你的应用程序基准测试:

$this->output->enable_profiler(true);

在视图或模型或控制器中。

试试