2013-03-15 62 views
0

我正在为我的codeigniter应用程序创建一个数据库驱动路由。问题是,如果我的表中有超过X几十行,我的应用程序运行速度非常慢!问题是我没有使用或从我创建的路由表中获取任何信息。Slower CodeIgniter加载时间:基类

实际上,我在我的应用程序的缓存文件夹中使用了路径文件。

因此,这里是我有什么不缓存文件和数据库空:

enter image description here

0.0071/0,0196/0.0268

这是我和我的20.000行和我的缓存文件:(20.000线的高速缓存文件)

enter image description here

0.2637/0,0114/0.2752

这里是我有什么用空数据库和缓存文件:(20.000线缓存文件)

enter image description here

0.0036/0.0142/0.0179

所以,我不知道为什么我这三个基准之间有如此多的区别!

有没有办法来缓存数据库或做些什么呢?

如果有人可以帮助我,请提前致谢。

+0

如何在mysql路由表中添加索引?我不熟悉这个“mysql路由”过程,但是如果你的表缺少索引,这可能会让你的应用程序在重负载下变慢。 – Gaetan 2013-03-16 00:53:43

回答

0

在我的第一个情况下,我是用钩子是这样的:

require_once APPPATH “的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; 
} 

我在我的路线的包括在配置全局变量/ routes.php文件

现在我改变了它的高速缓存版本在缓存文件夹=>缓存/ routes.php和我把它包括在我的配置/ routes.php

因此,我不需要我的钩了=>性能提高!

+0

要么编辑这是对您的问题的正确答案并接受它,要么删除问题。这个答案不会帮助任何可能在未来遇到你的问题的人。 – talonmies 2013-03-16 10:16:13