簡體   English   中英

yii框架上的Ajax響應非常慢

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM