Search code examples
phploopsfile-get-contents

loop a file_get_contents until getting a non empty JSON in php


I have the following code:

<?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/>";
 }

The API used (nanopool) being extremely unreliable, I get a non empty json (success) every 2 to 10 calls.

I tried to loop the file_get_contents (do... while) until getting a non empty json without success. What can you recommend to loop until I get an answer?


Solution

  • Maybe you can try something like this, still I don't recommend using this within a synchronous script (eg a web page) because you can't control the time needed to get a successfull answer.

    <?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
    }