4


9

Twitter APIの結果をキャッシュする方法は?

twitter api結果の結果をキャッシュし、ユーザーに表示したい。

結果をキャッシュする最良の方法は何ですか?

時間制限に基づいて結果をファイルに書き込むことを考えています。 それは大丈夫ですか、他の方法を使用する必要がありますか?

そして最も重要なことは、理想的なキャッシュ時間は何ですか? twitterの最新コンテンツを表示したいのですが、twitter apiにはリクエストの制限があります。 また、私のサイトには1日あたりの訪問者が多くいます。

1 Answer


18


これを行う最もクリーンな方法は、http://www.php.net/manual/en/book.apc.php [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));
}