cakephp 2.5响应时间慢

时间:2015-08-26 09:04:12

标签: php mysql performance cakephp

我有这个功能:

public function index() {
    $this->set('var', $this->Model->find('all'));
}

此操作需要3秒以上才能完成。当我评论查找(查询)时,它只用了0.02秒。我已经尝试将调试设置为0 - 没有帮助。我发现只有第一个查询执行时间太长,任何其他查询都在0.01秒以下完成。我知道cakephp在第一次调用数据库时正在创建对象,而且我已经调试了那个需要这么长时间处理的事情。

现在我的问题是:当我从localhost执行索引只需要0.03秒,但是当我在远程服务器上执行相同操作时,它需要超过3秒?服务器不老,也不慢,并且具有良好的处理器和RAM。我已经尝试设置set global innodb_stats_on_metadata = 0;但它也没有帮助。

请大家,我真的需要比简单查询更好的响应时间3秒。我真的需要你的帮助。

2 个答案:

答案 0 :(得分:1)

好吧,我很高兴我在一些帮助下想出来了。问题发生在app/config/database.php 该文件看起来像这样:

public $default = array(
    'datasource' => 'Database/Mysql',
    'persistent' => false,
    'host' => 'db.domain.com',
    'login' => 'login',
    'password' => 'password',
    'database' => 'database',
    'prefix' => '',
    'encoding' => 'utf8'
);

当我将主机改为'localhost'时:

public $default = array(
    'datasource' => 'Database/Mysql',
    'persistent' => false,
    'host' => 'localhost',
    'login' => 'login',
    'password' => 'password',
    'database' => 'database',
    'prefix' => '',
    'encoding' => 'utf8'
);

突然创建的mysql对象从4秒以上减少到0.03秒。我仍然无法相信它,我会很感激,如果有人能告诉我为什么会有这么大的差异,但这个小小的改变帮助我解决了我的问题。我希望它也会对某人有所帮助。

答案 1 :(得分:0)

Redrif,我通常建议使用分页,但基于您只检索15条记录的事实,您可能希望研究限制/删除正在检索的关联数据量。

使用此选项删除所有相关数据:

$this->set('var', $this->Model->find('all', array('recursive' => -1)));