Я экспериментирую с JSON Api с PHP. Я использую бесплатный API-интерфейс ценового тикера биткойнов от Blockchain. Он работает, но для обновления данных мне нужно обновить страницу. Возможно ли автоматическое обновление данных без обновления страницы? Это то, что у меня сейчас (работает)
<?php
$json = file_get_contents('https://blockchain.info/ticker');
$data = json_decode($json,true);
$priceUSD = $data['USD']['last'];
echo $priceUSD;
Заранее спасибо, хорошего дня!
С уважением, король,
L Kenselaar
пойти с socketio






Чтобы обновить данные в вашем массиве PHP, вам нужно будет запустить новый HTTP-запрос к вашему API из PHP-кода. Не обновляя страницу, на которой отображается ваш PHP, вам нужно будет держать соединение открытым (которое будет длиться только до тех пор, пока ваш php.ini max_execution_time равен, а PHP не может редактировать данные, которые он уже отправил, поэтому самое близкое, что вы могли бы получить это новостная лента, которая добавляет новые строки внизу)
Если все, что вам нужно, это самообновляющийся веб-сайт, вам придется использовать JavaScript (который может работать бесконечно и регулярно запрашивать новые данные из вашего PHP-сервера). Ищите AJAX или XMLHttpRequests в целом.
Если вы должны придерживаться PHP, вы можете запустить независимый процесс в фоновом режиме (проверьте nohup или disown в Linux / Unix).
Ваш сценарий будет делать что-то вроде:
<?php
while(true){
try {
$json = file_get_contents('https://blockchain.info/ticker');
$data = json_decode($json,true);
$priceUSD = $data['USD']['last'];
// Do the internal handling
// update your database, etc
}
catch (Exception $e) {
echo 'Error: ' . $e->getMessage() . "\n";
}
// wait for 5 seconds
sleep(5);
}
Имейте в виду, что код PHP выполняется в блокирующем потоке, а это означает, что этот процесс должен выполняться отдельно от вашего веб-сервера.
Однако, если вы хотите выполнять обе задачи одновременно (получение и обслуживание запросов), вам придется рассмотреть альтернативы, такие как NodeJS.
Вы используете ajax для обращения к веб-сервису, который вызывает этот PHP-код? Или вы просто загружаете это прямо в файл HTML php? Если HTML, вы можете посмотреть на выполнение мета-обновления: w3schools.com/tags/att_meta_http_equiv.asp ИЛИ, если вы используете ajax с JS, вы можете поместить свою функцию ajax внутри функции, которая вызывается интервалом JS, который запускается каждые n-е секунды, чтобы перейти и получить новую цену и т. д. stackoverflow.com/questions/4930439/…