Как выполнить задачу в кроне?

213
17 декабря 2017, 11:03

Есть код АПИ

<?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>

Необходимо получаемые данные echo $data['value'] и echo $data['depart_date'] сохранять каждые 30 минут в файл text.txt и вытащить и вставить в таблицу. Дуб дубом. Спасибо

P.S код сииииильно грузит сервер.

Answer 1

Сама команда для Cron wget -O /dev/null script.php >/dev/null 2>&1 Что б массив в файл записать используйте json_encode() например, а для извлечения json_decode(), для записи в файл file_put_contents() и для чтения file_get_contents()

Лучше разделить код на 2 файла. Первый для записи. Второй для чтения.

<?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);
file_put_contents('text.txt', $response);
?>

Его ставим на Cron. А этот открываем для чтения.

<table id='example2' class='display'>
<thead>
<tr>
<th>Дата вылета </th>
<th>Цена, р.</th>
</tr>
</thead>
<tbody>
<tr>
<?php 
$data = json_decode(file_get_contents('text.txt'), true);
for ($i=0; $i < count($data['data']); $i++) { 
echo"<td>";
echo $data['data'][$i]['depart_date']  ;
echo"</td>";
echo"<td>";
echo $data['data'][$i]['value']  ;
echo"</td>"; echo"</tr>";
}
?>
</tbody>
</table>

Код проверен. Работает.

READ ALSO
if (значения из бд == значения из массивов)

if (значения из бд == значения из массивов)

Добрый вечер! Подскажите как правильно написать код, суть в том мне нужно чтобы так работал: Пример - в базе данных значения:

203
Составления отчета из базы данных по нескольким таблицам

Составления отчета из базы данных по нескольким таблицам

Добрый день! Как составить отчет по нескольким таблицам? Все записи в таблицы заявки объединяются по году и недели в виде ссылкиНа другой...

196
Как записать в файл из другого сайта? [требует правки]

Как записать в файл из другого сайта? [требует правки]

Подскажите как собирать сообщения из других сайтов,есть 10 или больше сайтов на которых стоит реклама и на них есть обратная связь и вопрос...

215