繁体   English   中英

结合了cURL和PHP的AJAX-Request加载时间太长

[英]AJAX-Request combined with cURL and PHP takes too long to load

我正在使用xampp在本地计算机上工作,其他所有ajax请求都可以很好,快速地工作。 我当前的应用程序需要21秒来加载3.5 KB的数据。

如果您问我,这有点慢。 那我的软件在做什么呢?

该软件有4个单选按钮。 用户选择一个,然后创建一个ajax请求

var radio = $('input[name="selection"]:checked').val();
var hidden = $('#hiddenFive').val();
$.ajax
({  
    type: 'GET',
    url: 'curl.php',
    data: {type: radio, region: 'Hampshire', hidden: hidden},
    success: function(response, textStatus, XMLHttpRequest) 
    {
        var obj = jQuery.parseJSON(response);
        var strin = '';
        for(var i = 0; i < obj.length; i++)
        {
            strin += "<b>Name of " + radio + ": </b>" + obj[i].name + "<b> | Region: </b>" + obj[i].region + "<br>";    
        }
        $('#result').html(strin);
    },
    error: function(response, status, error)
    {
        alert("Error"); 
    }
}); 

数据被发送到站点curl.php,该站点将curl请求发送到外部网站。 我写了外部草书,因为它在同一个文件夹中,所以我们应该像在外部文件上一样操作,并且需要带有cURL数据(您知道的家庭作业)

所以,现在,URL看起来像这样

http://localhost/htmlAssignment/5/curl.php?type=town&region=Hampshire&hidden=hiddenFive

curl.php将这些参数保存在变量中,然后将其发送到Web service.php

<?php
$type = $_GET['type'];
$region = $_GET['region'];
$hidden = $_GET['hidden'];
$url = "http://localhost/htmlAssignment/webservice.php?type=" . $type . "&region=" .$region. "&hidden=".$hidden;
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
$output = curl_exec($ch);
curl_close($ch); 
echo $output;
?>

webservice.php

检查隐藏值是否为hiddenFive,什么是正确的,然后调用db函数

if(isset($_GET['type']) && isset($_GET['region'])  && $_GET['hidden'] == 'hiddenFive')
{
    $array = array();
    $region = $_GET['region'];
    $type = $_GET['type'];
    $array = $db->getMultiDataPOI($type, $region);
    echo json_encode($array);           
}

我的数据库功能看起来像这样

function getMultiDataPOI($type, $region)
    {
        $getMultiSQL = "SELECT ID, name, type, country, region, lon, lat, description FROM pointsofinterest WHERE type = :type AND region = :region";
        $getMultiPrepare = $this->prepare($getMultiSQL);
        $getMultiPrepare->bindParam(':type', $type);
        $getMultiPrepare->bindParam(':region', $region);
        $getMultiPrepare->execute();
        $getMultiResult = $getMultiPrepare->fetchAll();
        return $getMultiResult;
    }

在那20秒钟之后,数据将正常显示并按原样显示,但是要花20秒钟,如果您问我,这有多奇怪。 长时间以来这里可能是什么问题? 正如我所说的,我正在使用xampp和任何其他使用相同Web服务的AJAX请求在localhost上进行即时加载。 为什么要花这么长时间?

如果FireBug有帮助,则提供以下屏幕。 希望您能阅读。

请求的FireBug屏幕

仅凭我的经验,我发现localhost经常会引起奇怪的行为,例如您所描述的。 您是否曾经尝试过将localhost的引用更改为127.0.0.1并使用它? Localhost仍然必须进行名称查找,有时从您的hosts文件中可能不可靠,请参阅127.0.0.1和localhost有什么区别?

另外,我会尝试直接打开PHP服务文件(即您在AJAX中调用的文件),以确保它可以快速加载。 由于它正在执行SQL查询,因此您的查询甚至MySQL配置可能会导致某些延迟。

另一方面,请谨慎使用您的webserver.php文件。 您的所有请求数据都不会被过滤,而是直接进入数据库,这使您的应用程序可以进行SQL注入。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM