它讓我很惱火,以下查詢在被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