0

私は次のコードで作業しています:

public function getUser($name) {
        $return = array();
        $file = array();
        $httpSocket = new HttpSocket();
        $url = $this->baseUrl . $name . $this->apiKey;
        $temp = $httpSocket->get($url);
        $file = $temp->body;
        $file = explode(',', $file);
        $i = 0;

        foreach ($file as $info) {
            $info = str_replace("{", "", $info);
            $info = str_replace("}", "", $info);
            $info = str_replace('"', "", $info);
            $info = str_replace("[", "", $info);
            $info = str_replace("]", "", $info);
            $temp = explode(':', $info, 2);

            if ($temp[0] == 'stream') {
                $temp[1] = str_replace("game:", "", $temp[1]);
                if ($temp[1] == 'StarCraft II: Wings of Liberty') {
                    $temp[1] = 'starcraft-II';
                }
                $return[$i]['game'] = $temp[1];
            } elseif ($temp[0] == 'teams') {
                $temp[1] = str_replace("name:", "", $temp[1]);
                if ($temp[1] != '') {
                    $return[$i]['teams'] = $temp[1];
                } else {
                    $return[$i]['teams'] = null;
                }
            } else {
                if (isset($temp[1])) {
                    $return[$i][$temp[0]] = $temp[1];
                }
            }
        }

        return $return;
    }

このスクリプトの読み込み時間を短縮するために何かできることはないかと考えていました。記録のために TwitchTV から json ファイルを取得しています。この機能は、ページの更新/読み込み時にのみうまく機能し、ページのレンダリングに 2 ~ 3 秒の遅延が見られます。いつものように、どんな助けも大歓迎です。

4

1 に答える 1

1

API からの応答が json であることをご存知ですか? json_decode() を使用する代わりに、手動で応答を解析するのはなぜですか? json_decode() を使用して、それが生成するものを見てください。コードの 90% を削除できます。

また、必要に応じて、API 応答を数分から数時間キャッシュします。本のキャッシングの章を読んでくださいhttp://book.cakephp.org/2.0/en/core-libraries/caching.htmlページは、別の API 呼び出しを行う必要がないため、更新時にすぐに読み込まれます。

于 2012-10-23T08:28:48.227 に答える