Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/422.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php yii框架上的ajax响应非常慢_Php_Javascript_Mysql_Ajax_Yii - Fatal编程技术网

Php yii框架上的ajax响应非常慢

Php yii框架上的ajax响应非常慢,php,javascript,mysql,ajax,yii,Php,Javascript,Mysql,Ajax,Yii,我对yii框架有一个奇怪的问题。在localhost上,ajax响应需要200毫秒(这很快,我也很满意),而在我的实时服务器上,相同的功能需要4到7秒 下面是我的php ajax函数:- public function actionOpenpopup() { $this->checkAjaxRequest(); $user_id = $_GET['uid'];

我对yii框架有一个奇怪的问题。在localhost上,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;
                        }
              }
function sendAjaxCall(data){

$.ajax({
                                type : 'GET',
                                url : 'index.php/request/openpopup',
                                datatype : 'json',
                                data :data,
                 success: function (data) {
                        console.log(data);                      
                        }
});    

}
javascript代码是:-

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;
                        }
              }
function sendAjaxCall(data){

$.ajax({
                                type : 'GET',
                                url : 'index.php/request/openpopup',
                                datatype : 'json',
                                data :data,
                 success: function (data) {
                        console.log(data);                      
                        }
});    

}

*注意:-到目前为止,数据库只有10到20条记录。同样在live server上,我所有的ajax调用响应都很慢。

我会尝试一些方法。首先,在你
echo
你的json之后,我会终止你的脚本,以确保没有其他东西运行:

if ($rows) {
    echo json_encode($rows);
    die();
}
另外,在
index.php
上,如果中间两行以
defined()
开头的任何一行都已启用,请确保站点已退出调试模式。每个页面加载都是在重新创建缓存文件,这可能需要一段时间,特别是如果包含像bootstrap这样的扩展名。当我为某人做一些工作时,他们的网站被托管在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();

然后使用浏览器进入
http://yoursite.com/index.php/request/checkpopup?uid=1

这与Java无关。您能在Chrome网络控制台中检查请求的哪一部分需要时间吗?如果是DNS查找ETC,那么从本地服务器和实时服务器上的代码来看,可能是由于某个原因(例如,大量请求)导致了坏的internet或主机速度减慢,可以安全地假设这不是代码。这意味着它是服务器或您与live server之间的连接。如果您在共享主机环境中,可能有另一个vhost占用了资源。感谢您的回复。我使用的是AmazonEC2服务器。我的其他项目运行良好。但是这个(基于yii的)有一些问题。非常感谢您的详细解释。我评论了你指出的两行,但这并没有解决我的问题。反应很慢。是的,数据库和代码在同一台服务器(AmazonEC2)上,我尝试使用直接链接(正如您所说)调用它,它可以非常快地生成结果,大约1到2秒。所以有一点是肯定的,服务器响应良好,但Ajax调用需要花费大量时间。有什么解决方案吗?我会在Chrome或Firefox上安装firebug,然后观察控制台,你会看到Ajax请求发出又返回。它可能会帮你找到一些东西,我已经做过了。什么也没找到。我所能看到的是ajax需要4到7秒的时间,然后生成resposne。这就是firebug告诉你的,你修改了你的
actionOpenpopup()
并修正了
$rows
的填充方式?我唯一能想到的另一件事是开始在代码中添加一些时间戳,并将其包含在返回的json数组中,以便您可以看到代码的哪些部分花费了很长时间。