每x秒更新一次通过卷曲获取的数据

时间:2019-07-16 01:47:06

标签: php curl

我是php和curl的新手。我有一个php函数,它使用curl从API检索数据。这工作正常。但是,API数据将更新,因此我将需要定期检索json格式的数据。

function call_external_api()
{
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, sprintf('https://my-api.com'));
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
    $ex = curl_exec($curl);
    $data = json_decode($ex, true);
    $info = curl_getinfo($curl);
    return $data;
}

所以基本上,如果我想每10秒调用一次此php函数,我将如何去做?

1 个答案:

答案 0 :(得分:0)

由于您将在HTML页面上输出返回的数据,因此建议您使用JavaScript异步调用您的PHP文件。您可以在计时器上触发JavaScript调用。

根据API的不同,您甚至可能不需要PHP作为中介。

这是一个基本示例:

function getRandomNumber(min, max) {
  // Generate a random number between min and max.
  // Only for demonstration purposes.
  return Math.floor(Math.random() * (max - min) + min);
}

function makeRequest() {
  // Fetch test data by random ID.
  // This is where you call your PHP file.
  let id = getRandomNumber(1, 10);
  oReq.open("GET", "https://reqres.in/api/users/" + id);
  oReq.send();
}

function handleResponse() {
  // Output returned data to page
  output.innerHTML = JSON.parse(this.responseText).data.email;
  // Set up the next request to fire again in two seconds
  setTimeout(makeRequest, 2000);
}

// Define output element
let outout = document.getElementById('output');

// Define XMLHttp Request
let oReq = new XMLHttpRequest();
oReq.addEventListener("load", handleResponse);

// Make first request
makeRequest();
<div id="output"></div>

有关参考,请参阅: