@sochi-russia

Как ускорить получение данных с АПИ?

Есть код
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://api.travelpayouts.com/v2/prices/month-matrix?currency=RUS&origin=MOW&destination=LED&show_to_affiliates=true&month=2017-12-13&token=*********");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, FALSE);
curl_setopt($ch, CURLOPT_HTTPHEADER, array("X-Access-Token: **********"));
$response = curl_exec($ch);
curl_close($ch);
$products=json_decode($response,true);
?>

<table id='example2' class='display'>
    <thead>
        <tr>
            <th>Дата вылета     </th>
            <th> Цена, р.</th>
            </tr>
            </thead>
            <tbody>
                <tr>
<?php foreach ($products['data'] as $destination => $data) {

echo"<td>";
echo $data['depart_date']  ;
echo"</td>";
echo"<td>";
echo $data['value']  ;
echo"</td>"; echo"</tr>"; 
  }
?>
</tbody>
</table>


Все нормально выводится, но он чертовски сильную дает нагрузку. Как это исправить? Спасибо
  • Вопрос задан
  • 461 просмотр
Пригласить эксперта
Ответы на вопрос 4
DmitriyEntelis
@DmitriyEntelis
Думаю за деньги
@sochi-russia
у сайта нет базы данных.

сделайте. не умеете - научитесь. не хотите учиться - наймите профессионала.
объяснить как из php работать с базой данных - явно выходит за рамки вопроса на тостере.
материала в сети море.

php.net/manual/ru/intro.mysqli.php
www.mysql.ru/docs/man/Reference.html
Ответ написан
YardalGedal
@YardalGedal
yeah boy
Я, наверное, подытожу все предыдущие ответы:

1. Вам нужно использовать какое-то хранилище на своём сервере, чтобы в него записывать данные и из него отдавать их пользователю.
2. Данные в хранилище будут синхронизироваться с API раз в N единиц времени.
3. В качестве хранилища может выступать:
3.1 Реляционная База данных, например Mysql.
3.2 Нереляционная База данных, например Redis.
3.3 Локальный кэш.

Если сейчас вы ничего не поняли или не знаете как это реализовать - клац сюда

И да, других ПРОСТЫХ вариантов НЕТ. Нельзя просто так взять и ускорить что захочется.
Ответ написан
@vanillathunder
Записывайте данные из api в бд, каждые n минут в кроне.
Ответ написан
Exploding
@Exploding
wtf?
Ну если необъятный страх использования БД у вас в симптомах, я бы как-то так кэш хранил:
$recivedDataArray = array(....); //То что с АПИ получили
$toCache = serialize($recivedDataArray);
file_put_contents ("cache/".time()."_cache", $toCache);
file_put_contents ("cache/last_cache", $toCache);

Вот и все дела... И история и последний кэш, и если подумать то на файлах так можно хоть черта лысого сделать)) Другой вопрос, что это все как бы "через анальное отверстие", но это уже дело каждого
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы