首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >较慢的CodeIgniter加载时间:基类

问较慢的CodeIgniter加载时间:基类
EN

Stack Overflow用户
提问于 2013-03-16 07:04:03
回答 1查看 1.2K关注 0票数 0

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

实际上,我使用的是应用程序缓存文件夹中的路由文件。

所以这是我没有缓存文件和DB empty的情况:

​

​

0.0071 / 0,0196 / 0.0268

下面是我的20.000行和缓存文件:(缓存文件有20.000行)

​

​

0.2637 / 0,0114 / 0.2752

这是我对空数据库和缓存文件的设置:(缓存文件有20.000行)

​

​

0.0036 / 0.0142 / 0.0179

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

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

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-16 17:43:47

在我的第一个例子中,我是这样使用Hooks的:

require_once APPPATH."config/database.php";

代码语言:javascript
复制
$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文件中,我有:

代码语言:javascript
复制
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中的全局变量

现在,我将其更改为缓存文件夹=>缓存/routes.php中的缓存版本,并将其包含在我的config/routes.php中

所以我不再需要我的钩子了,=>性能提高了!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15443460

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档