[英]Very slow ajax response on yii framework
我在使用yii框架時遇到奇怪的問題。 在本地主機上,ajax響應要花費200毫秒(這是我的滿意,這是快速的),而在我的實時服務器上,相同的功能需要4到7秒。
以下是我的PHP Ajax函數:-
public function actionOpenpopup() {
$this->checkAjaxRequest();
$user_id = $_GET['uid'];
$rows = Yii::app()->db->createCommand()
->select('*')
->from('saved_designs')
->where('uid=:id', array(':id' => $user_id))
->order('date desc')
->queryAll();
$i = 0;
foreach ($rows as $row) {
$rows[$i] = $row;
$i++;
}
if ($rows) {
echo json_encode($rows);
}
else
echo json_encode(null);
}
function checkAjaxRequest() {
if (Yii::app()->request->isAjaxRequest) {
header('Content-Type: application/json; charset="UTF-8"');
return true;
} else {
throw new CHttpException('403', 'Forbidden Access');
exit;
}
}
JavaScript代碼是:-
function sendAjaxCall(data){
$.ajax({
type : 'GET',
url : 'index.php/request/openpopup',
datatype : 'json',
data :data,
success: function (data) {
console.log(data);
}
});
}
* 注意:-到目前為止,數據庫只有10到20條記錄。 同樣在實時服務器上,我所有的ajax調用都給我緩慢的響應。
我會嘗試一些事情。 首先,在您echo
json后,我將殺死您的腳本以確保沒有其他腳本運行:
if ($rows) {
echo json_encode($rows);
die();
}
同樣在index.php
上,如果啟用了以defined()
開頭的中間兩行之一,則確保您已使站點退出調試模式,每個頁面加載Yii正在重新創建緩存的文件,這可能需要一段時間,尤其是如果您包含擴展程序(例如引導程序)。 當為某人做一些工作時,我遇到了這個確切的問題,他們的網站托管在GoDaddy上。 由於某種原因,文件創建的速度確實很慢,並且確實拖累了所有內容。
<?php
$yii=dirname(__FILE__).'/../framework/yii.php';
$config=dirname(__FILE__).'/protected/config/test.php';
//defined('YII_DEBUG') or define('YII_DEBUG',true);
//defined('YII_TRACE_LEVEL') or define('YII_TRACE_LEVEL',3);
require_once($yii);
Yii::createWebApplication($config)->run();
還有其他功能運行緩慢嗎? 您的錯誤日志中有任何錯誤?
幫助調試的另一個選項是創建不需要AJAX調用的其他操作。 通過這種方式進行調試比依靠ajax調試容易得多,此外,它還可以幫助您縮小問題的根源。 另外,不知道為什么,但是您得到了行數組,然后重新填充了行數組,這是非常多余的。
public function actionCheckpopup() {
$user_id = $_GET['uid'];
$rows = Yii::app()->db->createCommand()
->select('*')
->from('saved_designs')
->where('uid=:id', array(':id' => $user_id))
->order('date desc')
->queryAll();
echo json_encode($rows);
die();
}
然后只需使用瀏覽器,然后轉到http://yoursite.com/index.php/request/checkpopup?uid=1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.