Cloudflare API возвращает половину времени - PullRequest
0 голосов
/ 25 января 2019

Итак, я настроил функцию, которая вызывает API-интерфейс cloudflare и получает просмотры страниц с каждого из моих веб-сайтов на cloudflare.У меня возникла проблема, когда половину времени загрузки API он загружает правильные числа, а другая половина просто возвращает Null или пустую строку.Я не могу понять, если это проблема API или имеет какое-то отношение к моему коду.Мне также интересно, есть ли способ, которым я могу просто проверить, является ли значение пустым, и повторить вызов API, пока он не вернет значение, но это последний сценарий, и я не уверен, как это сделать.Я использую платформу codeigniter.

Моя функция библиотеки API:

    public function get_page_views($zoneID)
{
    $header = array(
        'X-Auth-Email: my@email.com',
        'X-Auth-Key: myAuthKey',
        'Content-Type: application/json'

    );
    // Gathering all data within past year because thats what cloudflare limits me too.

    $subtract = strtotime('-1 year');
    $since = date('Y-m-d', $subtract);
    $until = date('Y-m-d');

    $data = json_decode($this->get_url_contents("https://api.cloudflare.com/client/v4/zones/". $zoneID ."/analytics/dashboard?since=". $since ."T00:00:00Z&until=". $until ."T00:00:00Z&continuous=true", $header), true);

    return $data['result']['totals']['requests']['all'];

}

private function get_url_contents($url, $header)
{    
    ini_set('max_execution_time', 300);
    $crl = curl_init();
    $timeout = 5;
    curl_setopt ($crl, CURLOPT_URL,$url);
    curl_setopt ($crl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt ($crl, CURLOPT_CONNECTTIMEOUT, $timeout);
    curl_setopt ($crl, CURLOPT_HTTPHEADER, $header);
    curl_setopt($crl, CURLOPT_CONNECTTIMEOUT, 0);
    curl_setopt($crl, CURLOPT_TIMEOUT, 50000);
    $ret = curl_exec($crl);
    curl_close($crl);
    return $ret;
}

А вот функция, которая вызывает каждый API, а затем кеширует их:

    public function fetch_pageViews()
{
    $cache = array(
        'site1' => $this->api->get_page_views('myZoneID'),
        'site2' => $this->api->get_page_views('myZoneID'),
    );   
    $this->cache->file->save('pageViews', $cache, 0);

    var_dump($this->cache->file->get('pageViews'));
}

Он либо возвращает это:

    array(2) {
  ["site1"]=>
  int(2088)
  ["site2"]=>
  int(4117)
}

, либо значения будут нулевыми.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...