它让我很恼火,以下查询在被AJAX请求启动时需要1秒的时间来处理页面刷新期间调用(同步)时仅需要2 ms的时间。我花了几个小时来追查哪里出了问题,但我很无奈。我已经尝试了Model-> read,Model-> find,Model-> query(),但它需要相同的时间。我认为1秒这样的简单查询并不自然。可能是CakePHP模型浪费太多资源和时间。但我的直觉说它与查询缓存有关。CakePHP查询 - 意外的大延迟
protected function _user_info($id= NULL){
//benchmarking
$time = -microtime(true);
if(!$id){
if($this->Auth->loggedIn())
$id = $this->Auth->user('id');
else
return NULL;
}
$this->loadModel('User');
/*$findOptions = array('conditions'=>array('User.id'=>$id),
'fields'=>'User.id, User.name, User.email, User.role, dp',
'limit'=>1,
'recursive'=>-1);
$r = $this->User->find('first', $findOptions);
*/
$r = $this->User->query("SELECT * FROM users WHERE id = '".$id."' LIMIT 1");
$time += microtime(true);
echo '<h1>'.$time.'</h1>'; //out- time taken for the query
return $r['User'];
}
任何形式的帮助都会很棒!
你真的不应该使用'query()' - 而是使用'find()'。 – SharkofMirkwood
你的基准测试需要多行。你应该缩小它,以便确切知道哪条线需要很长时间。 –
@ joshua.paling - 我已经尝试了所有基准测试,然后分组!它可以是'find()'或'query()',它需要一秒钟来处理。 – Killswitch