我的网站从我的API加载数据需要很长时间

时间:2014-03-19 10:47:32

标签: php performance api curl loading

这是我第一次开发API,这就是为什么我没有惊讶它运行有点慢,需要2-4秒才能加载(我在我的网页上使用了微量计时器)。 但后来我发现API命令执行了多长时间,它们大概是0.002秒。那么为什么当我在PHP中使用CURL时,还需要另外2秒才能加载?

我的API连接代码:

function APIPost($DataToSend){
    $APILink = curl_init();
    curl_setopt($APILink,CURLOPT_URL, "http://api.subjectplanner.co.uk");
    curl_setopt($APILink,CURLOPT_POST, 4);
    curl_setopt($APILink,CURLOPT_POSTFIELDS, $DataToSend);
    curl_setopt($APILink, CURLOPT_HEADER, 0);
    curl_setopt($APILink, CURLOPT_RETURNTRANSFER, 1);
    return curl_exec($APILink);
    curl_close($APILink);
}

我如何在网页中检索数据:

$APIData=array(
    'com'=>'todayslessons',
    'json'=>'true',
    'sid'=>$_COOKIE['SID']
);
$APIResult = json_decode(APIPost($APIData), true);
if($APIResult['functionerror']==0){
    $Lessons['Error']=false;
    $Lessons['Data']=json_decode($APIResult['data'], true);
}else{
    $Lessons['Error']=true;
    $Lessons['ErrorDetails']="An error has occured.";
}

APIPost函数位于functions.php文件中,该文件包含在我的页面的前面。从第二段代码的乞讨到结束所花费的时间大约是2.0126秒。获取API数据的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

这只是猜测,所以请不要打扰我。但也许它等待卷曲完成,即超时,因为你在返回之前没有关闭curl。

尝试这个微小的修正案看看是否有帮助:

function APIPost($DataToSend){
    $APILink = curl_init();
    curl_setopt($APILink,CURLOPT_URL, "http://api.subjectplanner.co.uk");
    curl_setopt($APILink,CURLOPT_POST, 4);
    curl_setopt($APILink,CURLOPT_POSTFIELDS, $DataToSend);
    curl_setopt($APILink, CURLOPT_HEADER, 0);
    curl_setopt($APILink, CURLOPT_RETURNTRANSFER, 1);
    $ret curl_exec($APILink);
    curl_close($APILink);
    return $ret;
}