0

codeigniterアプリケーション用にデータベース駆動型ルートを作成しています。問題は、テーブルにXダースを超える行がある場合、アプリケーションの実行速度が非常に遅くなることです。問題は、作成したルートテーブルを使用していないか、ルートテーブルから情報を取得していないことです。

実際、アプリケーションのキャッシュフォルダーにあるroutesファイルを使用しています。

だからここに私がキャッシュファイルと空のDBなしで持っているものがあります:

ここに画像の説明を入力してください

0.0071 / 0,0196 / 0.0268

これが私の20.000行と私のキャッシュファイルで持っているものです:(キャッシュファイルの20.000行)

ここに画像の説明を入力してください

0.2637 / 0,0114 / 0.2752

これが私が空のDBとキャッシュファイルで持っているものです:(キャッシュファイルの20.000行)

ここに画像の説明を入力してください

0.0036 / 0.0142 / 0.0179

だから、なぜ私はこれらの3つのベンチマークの間にそれほど大きな違いがあるのか​​わかりません!

データベースをキャッシュする方法や、それについて何かをする方法はありますか?

誰かが私を助けてくれるなら、事前に感謝します。

4

1 に答える 1

0

私の最初のケースでは、次のようなフックを使用していました。

require_onceAPPPATH。"config/ database.php";

$hook['pre_system'] = array(
     'class'    => 'Router_Hook',
     'function' => 'get_routes',
     'filename' => 'Router_Hook.php',
     'filepath' => 'hooks',
     'params'   => array($db['default']['hostname'],$db['default']['username'],$db['default']['password'],$db['default']['database'],$db['default']['dbprefix'],)
                        );

私のrouter_hookファイルには、次のものがあります。

function get_routes($params)
{
    global $DB_ROUTES;

    mysql_connect($params[0], $params[1], $params[2]);

    mysql_select_db($params[3]);

    $sql = "SELECT * FROM {$params[4]}routes";
    $query = mysql_query($sql);

    $routes = array();
    while ($route = mysql_fetch_array($query, MYSQL_ASSOC)) {
        $routes[$route['route']] = $route['controller'];
    }
    mysql_free_result($query);
    mysql_close();
    $DB_ROUTES = $routes;
}

config/routes.phpのグローバル変数を使用してルートにインクルードしました

ここで、キャッシュフォルダー=> cache / routers.phpのキャッシュバージョンに変更し、config/routes.phpに含めました。

だから私はもうフックを必要としません=>パフォーマンスの向上!

于 2013-03-16T09:43:47.330 に答える