1

サーバー上の単一のファイルに複数のJSONオブジェクトをキャッシュするソリューションを探しています(データベースなし)。この理由は、ユーザーの YouTube チャンネルからの複数の JSON 要求を持つサイトを開発していて、ページの読み込みに時間がかかるためです。

YouTube からの JSON リクエストを作成する PHP ファイルの短いセクション (この json-yt.php ファイルには、さらに多くの JSON リクエストがあります。

// VNM Jar
$realUserName = 'TheEnijar';
$data = file_get_contents('http://gdata.youtube.com/feeds/api/users/' . $realUserName . '?v=2&alt=json');
$data = json_decode($data, true);
$TheEnijar = $data['entry']['yt$statistics'];

// VNM Jinxed
$realUserName = 'OhhJinxed';
$data = file_get_contents('http://gdata.youtube.com/feeds/api/users/' . $realUserName . '?v=2&alt=json');
$data = json_decode($data, true);
$OhhJinxed = $data['entry']['yt$statistics'];

// VNM Pin
$realUserName = 'ImGreenii';
$data = file_get_contents('http://gdata.youtube.com/feeds/api/users/' . $realUserName . '?v=2&alt=json');
$data = json_decode($data, true);
$ImGreenii = $data['entry']['yt$statistics'];

// VNM Zq
$realUserName = 'Zqonalized';
$data = file_get_contents('http://gdata.youtube.com/feeds/api/users/' . $realUserName . '?v=2&alt=json');
$data = json_decode($data, true);
$Zqonalized = $data['entry']['yt$statistics'];

これは可能ですか?もしそうなら、誰かが私を正しい方向に向けるか、ユーザーがページをロードする前にJSONリクエストを保存し、JSONがすべての異なるYouTubeチャンネルにリクエストを送信するソリューションを提供してもらえますか.

4

2 に答える 2

1

次のようなことができます:

<?php

function getCachableContent($url){
    $hash = md5($url);
    $cacheFile = "/tmp/foo-cache/$hash";
    if ( file_exists($cacheFile) and filemtime($cacheFile) < time() - 300 ) {
        $data = file_get_contents($cacheFile);
    } else {
        $data = file_get_contents($url);
        file_put_contents($cacheFile, $data);
    }
    return json_decode($data);
}

$data = getCachableContent('http://gdata.youtube.com/feeds/api/users/' . $realUserName . '?v=2&alt=json');

しかし、有効期限を提供するredisのようなソリューションを使用する方が良いと思います. また、一時ディレクトリ用の ramdisk を作成して (Linux を使用している場合)、高速化することもできます。

于 2013-06-16T19:02:38.867 に答える