令我很恼火的是,AJAX请求启动时的以下查询需要1秒才能处理在页面刷新(同步)期间调用的时间仅为2毫秒。我花了几个小时追查出了什么问题,但我很无奈。我尝试过Model-> read,Model-> find,Model-> query()但它需要相同的时间。我认为像这样的简单查询1秒钟并不自然。可能是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'];
}
任何形式的帮助都会很棒!
答案 0 :(得分:0)
首先,尝试普通的Cake搜索样式:
// You should have containable
$this->User->contain();
$r = $this->User->find('first',array('conditions'=>array('id'=>$id)));
测试一下。 欢呼声。
答案 1 :(得分:0)
如果您在debug
2,那么您不会计算执行时间,也会计算调试开销。
启用调试的缓存将不会长时间使用,这意味着将要求DB对表进行DESCRIBE,将创建sql日志,可能会多次请求昂贵的对象反射,尤其是在遇到警告,异常或非致命错误,所有这些将使相当更长。