使用file_get_contents加载时间较慢

时间:2017-10-31 11:13:42

标签: php sql

我遇到了谷歌地理编码api每日请求限制的问题。所以我想每次将新项目添加到我的数据库时我都会保存位置,并且只在添加新项目时发出请求,这样我才能达到每日限制。

但我正努力让它发挥作用。

所以我添加了一个名为requested的列,默认情况下为0,当向Google发出请求时,我将其更改为1.

使用以下代码:

// Kijk of er al een plaatsnaam en straatnaam in de database bestaan bij het artikel
$existcheck = "DESC snm_content";
$existcheckcon = $conn->query($existcheck);
$existcheck = $existcheckcon->fetch_assoc();

if($existcheck['requested'] == 0){
    $getlatlong = file_get_contents("https://maps.googleapis.com/maps/api/geocode/json?address=".$bedrijven['plaats'].",".$straatnaam."&key=myapikey");

    $updatetable = "UPDATE snm_content SET requested = 1";
    $updatetablecon = $conn->query($updatetable);

    // echo $updatetable;

}else if(
    $existcheck['requested'] == 1){
}

这样可行,但我的网站速度非常慢,就像它仍在发出请求一样。为什么会这样?

我只发布了部分代码以使其更清晰,我将在下面发布我的整个PHP代码:

$bedrijven = "
SELECT
  cnt.id, cnt.title, cnt.introtext, cnt.ordering, cnt.images, cnt.alias, cnt.state, f.item_id,
  MAX(CASE WHEN f.field_id = 3 THEN f.value END) AS plaats,
  MAX(CASE WHEN f.field_id = 1 THEN f.value END) AS straat
FROM snm_fields_values f
JOIN snm_content cnt
ON cnt.id = f.item_id
WHERE cnt.state = 1
GROUP BY f.item_id
ORDER BY f.item_id, plaats, straat";

$bedrijvencon = $conn->query($bedrijven);
$bedrijvenarray = [];

while($bedrijven    = $bedrijvencon->fetch_assoc()){
  $straatnaam = '';
  $plaatsnaam = '';
  // Stop $bedrijven in een array
  array_push($bedrijvenarray, $bedrijven);
  // Vervang de straatnaam spaties met plusjes voor de filegetcontents url
  $straatnaam .= str_replace(' ', '+', $bedrijven['straat']);
  $plaatsnaam .= $bedrijven['plaats'];

  // Kijk of er al een plaatsnaam en straatnaam in de database bestaan bij het artikel
  $existcheck  = "DESC snm_content";
  $existcheckcon = $conn->query($existcheck);
  $existcheck = $existcheckcon->fetch_assoc();

  if($existcheck['requested'] == 0){
      $getlatlong = file_get_contents("https://maps.googleapis.com/maps/api/geocode/json?address=".$bedrijven['plaats'].",".$straatnaam."&key=myapikey");

      $updatetable = "UPDATE snm_content
      SET requested = 1";
      $updatetablecon = $conn->query($updatetable);

      // echo $updatetable;

  }else if(
      $existcheck['requested'] == 1){
  }

  $latlongarray = json_decode($getlatlong);
  $lat = '';
  $lng = '';


  $bedrijfimage = $bedrijven['images'];
  $bedrijfimg = json_decode($bedrijfimage);

  if($bedrijfimg->image_intro != ''){
     $bedrijvenimage = '../cms/'.$bedrijfimg->image_intro;
  }else{
     $bedrijvenimage = '../images/logo_ovn.png';
  }

  $image_array = array('intro_image'=>''.$bedrijvenimage.'');
  // Leeg de latlong na elke loop
  foreach ($latlongarray->results as $key => $latlong){
    //  $latlonglijst .= $latlong->geometry->location->lat.' ';
    //  $latlonglijst .= $latlong->geometry->location->lng.'<br>';
    $lat .= $latlong->geometry->location->lat;
    $lng .= $latlong->geometry->location->lng;
    // array_push($bedrijvenarray, $lat, $lng);
    $new_array = array('lat'=>''.$lat.'', 'lng'=>''.$lng.'');

  }
  // Voeg lat en lng toe aan de $bedrijven array
  $bedrijven['lat'] = $new_array['lat'];
  $bedrijven['lng'] = $new_array['lng'];
  $bedrijven['intro_image'] = $image_array['intro_image'];
  $bedrijvenarray1[] = $bedrijven;
}
$jsonobject = json_encode($bedrijvenarray1);

请求的列已经更改为每行1,因此它不应该再发出请求了,但它仍然很慢,而且是因为这个代码,因为当我删除它时,它就是&#39;又快了。

0 个答案:

没有答案