как кешировать результат твиттер API? - PullRequest
4 голосов
/ 08 ноября 2010

Я бы хотел кешировать результаты в Twitter API и отображать их пользователям ..

Какой лучший способ кешировать результат?

Я думаю записать результат в файл, основанный на ограничении по времени. Это нормально или любой другой метод следует использовать?

И самое главное, какой будет идеальный кешвремя?Я хотел бы отображать последний контент из твиттера, но в твиттер-интерфейсе API есть лимиты запросов .. А у моего сайта постоянные посетители / день ..

1 Ответ

18 голосов
/ 08 ноября 2010

Самый простой способ сделать это - использовать APC (альтернативный кэш PHP), если он установлен.Это имеет встроенную функцию «время жизни»:

if (apc_exists('twitter_result')) {
    $twitter_result = apc_fetch('twitter_result');
} else {
    $twitter_result = file_get_contents('http://twitter.com/...'); // or whatever your API call is
    apc_store('twitter_result', $twitter_result, 10 * 60); // store for 10 mins
}

Мой выбор - 10-минутный тайм-аут данных.Это будет зависеть от частоты обновления канала ...


Изменить Если у вас не установлен APC, вы можете сделать это, используя очень простой файл:

if (file_exists('twitter_result.data')) {
    $data = unserialize(file_get_contents('twitter_result.data'));
    if ($data['timestamp'] > time() - 10 * 60) {
        $twitter_result = $data['twitter_result'];
    }
}

if (!$twitter_result) { // cache doesn't exist or is older than 10 mins
    $twitter_result = file_get_contents('http://twitter.com/...'); // or whatever your API call is

    $data = array ('twitter_result' => $twitter_result, 'timestamp' => time());
    file_put_contents('twitter_result.data', serialize($data));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...