循环 file_get_contents 直到在 php 中得到一个非空的 JSON

loop a file_get_contents until getting a non empty JSON in php

我有以下代码:

<?php
$json = file_get_contents("https://api.nanopool.org/v1/eth/payments/0x218494b2284a5f165ff30d097d3d7a542ff0023B");
$decode = json_decode($json,true);
foreach($decode['data'] as $val){   
 echo date('Y-m-d',$val['date']).' -- '.$val['amount'].' -- '.$val['txHash'].' -- '.$val['confirmed'];
   echo "<br/>";
 }

API 使用的 (nanopool) 非常不可靠,我每 2 到 10 次调用就会得到一个非空 json(成功)。

我尝试循环 file_get_contents(do...while)直到得到一个非空的 json 但没有成功。在我得到答案之前,您可以建议循环什么?

也许你可以尝试这样的事情,但我仍然不建议在同步脚本(例如网页)中使用它,因为你无法控制获得成功答案所需的时间。

<?php
function getFileFTW($url)
{
    $fuse = 10;//maximum attempts
    $pause = 1;//time between 2 attempts
    do {
        if($fuse < 10)
            sleep($pause);
        $s = @file_get_contents($url);
    }
    while($s===false && $fuse--);
    return $s;
}


$json = getFileFTW("https://api.nanopool.org/v1/eth/payments/0x218494b2284a5f165ff30d097d3d7a542ff0023B");
if($json) {
    $decode = json_decode($json,true);
    //...
}
else {
    //json not loaded : handle error
}