PHP сохраняет результат динамической переменной каждые 24 часа

#php #json #api #variables

#php #json #API #переменные

Вопрос:

Я долго искал, но нигде этого не нашел. Итак, допустим, я делаю вызов API и помещаю некоторые данные в переменную

    <?php
$coinData = json_decode(file_get_contents('https://min-api.cryptocompare.com/data/pricemultifull?fsyms=BTCamp;tsyms=USD'), true); 


    $testVar = $coinData['RAW']['BTC']['USD']['PRICE'];


    echo $testVar;

   ?>
  

Теперь я получил фактическое значение цены биткойна в реальном времени в моей переменной $ testVar. Это значение постоянно меняется.

Как я могу делать «снимок» этой переменной каждые 24 часа и сохранять это значение данных? Я ничего не могу найти о том, как «сделать снимок» значения из динамической переменной.

Например, через 1 час я хочу сделать «снимок» из переменной $testVar, на данный момент значение равно 5322.15 . Теперь я хочу сохранить это точное значение как 5322.15 автоматическое, чтобы использовать его позже.

Спасибо за помощь!

Комментарии:

1. Вы можете использовать crontab / cronjob.

2. Спасибо за ответ, да, я думаю, что сделаю это с помощью cronjob. Но знаете ли вы, как сделать снимок динамического значения? Я ничего не нашел по этому поводу

3. Снимок, который вы называете, происходит при запуске задания из cron.

4. Понятно, спасибо за ответ

Ответ №1:

Установите задание cron для запуска каждые 24 часа, а затем записывайте значение каждого дня в виде новой строки в таблице базы данных. Например, в следующих строках:

 id int NOT NULL,
timestamp datetime NOT NULL,
current_value decimal(10,2) NOT NULL,
  

Ваше задание cron будет выглядеть примерно так:

 <?php
$db= mysqli_connect(DB_HOST,DB_USER,DB_PASS,DB_NAME);//connect to db
$coinData = json_decode(file_get_contents('https://min-api.cryptocompare.com/data/pricemultifull?fsyms=BTCamp;tsyms=USD'), true); 
$current_value = $coinData['RAW']['BTC']['USD']['PRICE'];
$timestamp = date('Y-m-d H:i:s');
$query = $db->prepare("INSERT INTO currency_values (current_value, timestamp) VALUES (?, ?)");
$query->execute([$current_value, $timestamp]);