Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 较慢的CodeIgniter加载时间:基类_Database_Codeigniter_Caching_Routes - Fatal编程技术网

Database 较慢的CodeIgniter加载时间:基类

Database 较慢的CodeIgniter加载时间:基类,database,codeigniter,caching,routes,Database,Codeigniter,Caching,Routes,我正在为我的codeigniter应用程序创建一个数据库驱动的路由。问题是,如果我的表中有X几十行以上,我的应用程序运行速度会非常慢!问题是我没有使用或从我创建的routes表中获取任何信息 事实上,我正在使用一个路由应用程序缓存文件夹中的文件 下面是我在没有缓存文件和DB empty的情况下得到的结果: 0.0071/00196/0.0268 以下是我的20.000行和缓存文件的内容:(缓存文件为20.000行) 0.2637/00114/0.2752 以下是我对空数据库和缓存文件的看法:

我正在为我的codeigniter应用程序创建一个数据库驱动的路由。问题是,如果我的表中有X几十行以上,我的应用程序运行速度会非常慢!问题是我没有使用或从我创建的routes表中获取任何信息

事实上,我正在使用一个路由应用程序缓存文件夹中的文件

下面是我在没有缓存文件和DB empty的情况下得到的结果:

0.0071/00196/0.0268

以下是我的20.000行和缓存文件的内容:(缓存文件为20.000行)

0.2637/00114/0.2752

以下是我对空数据库和缓存文件的看法:(缓存文件为20.000行)

0.0036/0.0142/0.0179

所以,我不知道为什么这三个基准之间有这么大的差异

有没有一种方法可以缓存de数据库或对此做些什么


如果有人能帮助我,请提前感谢。

在我的第一个案例中,我使用了如下挂钩:

需要一次APPPATH.config/database.php

在我的路由器钩子文件中,我有:

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文件夹=>cache/routes.php中将其更改为缓存版本,并将其包含在我的config/routes.php中


所以我不再需要我的钩子=>性能提升

编辑此内容,使其成为您问题的正确答案并接受它,或者删除该问题。这个答案不会帮助将来可能偶然发现你的问题的任何人。你是如何在mysql路由表中添加索引的?我不熟悉这个“mysql路由”过程,但如果您的表缺少索引,这可能会使您的应用程序在重载下运行缓慢。
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;
}