1

我一直在 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 的 Profiling Class,我发现整个函数执行大约需要 8 秒,而其中的 DB 查询只需要 1 秒。在我的代码中许多点的记录时间之后,我发现在 8 秒中,仅加载这些库和模型就花费了大约 6.5 秒,而代码的处理只花费了 1 多秒。

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

8 秒的功能执行是不可接受的,我无法确定解决方案。请帮忙……</p>

该站点托管在具有 512 MB RAM 的 DigitalOcean 云上,只有 2 个用户对其进行测试。我是否需要增加 RAM 才能实现这一点。我怎样才能加快这个加载时间...</p>

4

1 回答 1

0

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

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

在视图、模型或控制器内部。

试试看

于 2013-03-08T19:27:43.830 回答