我正在尝试在CI中添加来自数据库的动态路由。但是在我的表格中添加数据之后我的网站真的很慢。
无论如何要执行routes.php文件?或者无论如何加速我的网站?
注意:我有超过60,000条SEO友好网址的记录。
路由影响我的响应服务器时间,大约4秒。
这是我的代码:
require_once(BASEPATH . 'database/DB' . EXT);
require_once(BASEPATH . 'helpers/url_helper' . EXT);
require_once(BASEPATH . 'helpers/text_helper' . EXT);
$db = &DB();
$query = $db->query('select id,title from news');
$result = $query->result();
foreach ($result as $row) {
$string = strtolower(str_replace(' ', '-', $row->title));
$route["funny-news/" . $string] = "news/newsDetails/$row->id";
}
感谢。
修改
newsDetails控制器代码:
public function newsDetails($id)
{
$hdata['active'] = "news";
$result['news'] = $this->mytestdb->getNewsById($id);
$this->load->view('nheader', $hdata);
$this->load->view('newsDetails', $result);
$this->load->view('footer');
}
答案 0 :(得分:0)
我的建议是构建自己的子类(MY_Controller)。在控制器中加载数据库并使用file_put_contents将路由直接写入routes文件。
答案 1 :(得分:0)
打开routes.php
并将以下行放入
$route['funny-news/(.*)'] = "news/newsDetails/$1";
你的控制器看起来应该是
public function newsDetails($slug)
{
$hdata['active'] = "news";
$result['news'] = $this->mytestdb->getNewsBySlug($slug);
$this->load->view('nheader', $hdata);
$this->load->view('newsDetails', $result);
$this->load->view('footer');
}
有一件事 - 您应该在数据库中使用额外的字段作为所需的slug。
可以在PHP function to make slug (URL string)找到一个功能。
使用这种方法,您不需要用不必要的路线填充数据库。