Как кешировать фейсбук график api звонка - PullRequest
0 голосов
/ 07 марта 2019

Я создал функцию получения лайков для моей страницы в Facebook с помощью графика api. Тем не менее, уровень ограничения скорости продолжает достигаться, так как он вызывается при каждом запросе.

Как бы я кешировал это, чтобы он не звонил каждый раз?

Код, который я сейчас использую:

function fb_like_count() {
        $id = '389320241533001';
        $access_token = 'access token goes here';
    $json_url ='https://graph.facebook.com/v3.2/'.$id.'?fields=fan_count&access_token='.$access_token;
    $json = file_get_contents($json_url);
    $json_output = json_decode($json);
    if($json_output->fan_count) {
        return like_count_format($json_output->fan_count);
    } else{
        return 0;
    }
}

1 Ответ

1 голос
/ 07 марта 2019

В PHP есть много механизмов кеширования, которые вы можете использовать в зависимости от размера вашего проекта. Я бы посоветовал вам проверить memcached или Redis. Это механизмы кеширования в памяти, которые довольно быстры и помогут вам повысить производительность. Вы можете узнать больше о том, как реализовать memcached здесь или redis здесь .

Второй и более простой способ - использовать кеширование файлов. Это работает так: Вы отправляете запрос на Facebook API, а когда ответ возвращается, вы сохраняете его в файл. Если вы хотите отправить второй ответ, вы можете сначала проверить, есть ли в вашем файле какой-либо контент, и, если он есть, вы можете вернуть его непосредственно в свое приложение, в противном случае вы отправите запрос на номер Facebook API

.

Простая интеграция выглядит так

if (file_exists($facebook_cache_file) && (filemtime($facebook_cache_file) > (time() - 60 * 15 ))) {
   // Cache file is less than 15 minutes old but you can change this. 
   $file = file_get_contents($facebook_cache_file); // this holds the api data
} else {
   // Our cache is out-of-date, so load the data from our remote server,
   // and also save it over our cache for next time.
   $response = getFacebookData() // get data from facebook and save into file
   file_put_contents($facebook_cache_file, $response, LOCK_EX);
}

В любом случае, я бы предложил вам использовать любую библиотеку PHP для создания файлового кэша.

Ниже вы можете найти некоторые, которые могут быть интересны для просмотра:

...