【问题标题】:How to auto update data from json api with php?如何使用 php 从 json api 自动更新数据?
【发布时间】:2018-03-27 20:34:50
【问题描述】:

我正在用 PHP 试验 JSON Api。 我使用来自 Blockchain 的免费比特币价格代码 API。 它可以工作,但要刷新我需要刷新页面的数据。 是否可以在不刷新页面的情况下自动更新数据? 这就是我现在得到的(它的工作)

<?php

$json = file_get_contents('https://blockchain.info/ticker');
$data = json_decode($json,true);

$priceUSD = $data['USD']['last'];

echo $priceUSD;

提前致谢,祝你有美好的一天!

国王的问候,

L 肯塞拉

【问题讨论】:

  • 您是否使用 ajax 来访问调用此 PHP 代码的 Web 服务?还是您只是将其加载到 HTML php 文件中?如果是 HTML,您可以考虑进行元刷新:w3schools.com/tags/att_meta_http_equiv.asp 或者,如果将 ajax 与 JS 一起使用,您可以将 ajax 函数放在一个由 JS 间隔调用的函数中,该函数每隔 n 秒运行一次,以获取新价格等stackoverflow.com/questions/4930439/…
  • 使用 socketio

标签: php arrays json api


【解决方案1】:

为了刷新 PHP 数组中的数据,您必须在 PHP 代码中针对您的 API 运行一个新的 HTTP 请求。 在不刷新 PHP 呈现的页面的情况下,您需要保持连接打开(这只会持续只要您的 php.ini max_execution_time 是并且 PHP 无法编辑它已经发送的数据,因此您可以获得最接近的数据是在底部添加新行的新闻代码)

如果您想要的只是一个自我刷新的网站,您将不得不使用 JavaScript(它可以无限运行并定期从您的 PHP 后端请求新数据)。一般寻找 AJAX 或 XMLHttpRequests。

【讨论】:

    【解决方案2】:

    如果您必须坚持使用 PHP,您可能希望在后台运行一个独立进程(在 Linux/Unix 上查看 nohupdisown)。

    您的脚本会执行以下操作:

    <?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 代码在阻塞线程中运行,这意味着该进程必须在您的 Web 服务器之外运行。

    但是,如果您想同时执行两个任务(获取和服务请求),则必须考虑 NodeJS 等替代方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-09-09
      • 2023-03-02
      • 2021-07-02
      • 2021-12-07
      • 2021-07-05
      • 2020-01-31
      相关资源
      最近更新 更多