CodeIgniter 2.x 中的数据库驱动路由

2023-12-01

我正在创建一个站点,该站点将有很多需要添加到路由文件中的路由(800+) - 显然我不想将这些路由一一手动添加到路由配置文件中。

任何人都可以建议最佳实践,让我的路线自动从数据库加载。是否有合适的库/帮助程序可以执行此任务,适用于 2.x 版本

例如..

$route['apple'] = 'brands/index';
$route['blackberry'] = 'brands/index';
$route['htc'] = 'brands/index';
$route['samsung'] = 'brands/index';

这些只是我要添加到路线中的几个品牌 - 但有数百个品牌,所以我希望从数据库加载这些品牌,而不是手动输入这些品牌。另外 - 这种方法会产生任何影响吗从数据库加载它们的现场性能?

我正在使用 Codeigniter v2.1.3


如果您要通过数据库调用不断查询数据库(在每个页面加载时)application/config/routes.php文件然后我想会对性能产生很大的影响。

我建议(以及我之前这样做的方式)是将以下行添加到您的routes.php文件并将所有路线保存到routes.php文件在cache folder.

require_once APPPATH . 'cache/routes.php';

然后,您可以使用类似于以下的函数将所有结果写入缓存文件(使用 CI 的文件助手):

public function save_routes() {
        $routes = $this->routes_model->get_all_routes();

        $data = array();

        if (!empty($routes )) {
            $data[] = '<?php if ( ! defined(\'BASEPATH\')) exit(\'No direct script access allowed\');';

            foreach ($routes as $route) {
                $data[] = '$route[\'' . $route['uri'] . '\'] = \'' . $route['controller'] . '/' . $route['action'] . '\';';
            }
            $output = implode("\n", $data);

            write_file(APPPATH . 'cache/routes.php', $output);
        }
    }

如果您要在管理区域中添加新路由,只需在每次提交新路由时运行上述函数,它将重新生成您的路由缓存文件。

此方法将您的路线保留在application/config/routes.php完好无损,但允许您将新路由写入缓存文件,而不会严重影响站点的性能。

希望有帮助!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CodeIgniter 2.x 中的数据库驱动路由 的相关文章

  • PHP简单的html dom解析器与wordpress冲突吗?

    PHP简单的html dom解析器与wordpress冲突吗 因为每当我尝试将其与此代码一起包含在我的标头中时 一切都变成空白 感谢您提前提供任何帮助 当我尝试在 HTML 文档中使用 PHP 包含时 我遇到了同样的问题 但当我使用func
  • 禁用/启用用户访问/下载,但允许 php 编辑 - 使用 chown 和 chmod

    我想 move uploaded files到某个文件夹 比方说http localhost myproject protected 并且 PHP 应该能够rm mv cp 里面的一切protected 例如 启用 禁用用户对任何文件的访问
  • php56 - CentOS - Remi 仓库

    我刚刚在测试盒上安装了 php 5 6 正常的 cli php 解释器似乎不存在 gt php v bash php command not found gt php56 v PHP 5 6 13 cli built Sep 3 2015
  • 将字符串的第一个字母大写(前面带有特殊字符) - PHP

    我想将字符串大写 例如 hello 我希望我的函数返回 Hello 我尝试过使用 regex 和 preg match 但没有运气 这是我之前的问题 与此相关 preg match 正在匹配两个字符 而它应该只匹配一个字符 https st
  • 如何让 Laravel“确认”验证器将错误添加到确认字段?

    默认情况下 Laravel 确认 验证器将错误消息添加到原始字段 而不是通常包含确认值的字段 password gt required confirmed min 8 是否有任何简单的方法来扩展验证器或使用一些技巧来强制它始终在确认字段而不
  • 从 Symfony2 中的 http_basic auth 注销

    每当我去 admin logout 我已正确重定向到项目的根目录 但在访问时仍处于登录状态 admin 因为没有提示我输入凭据 这是我的配置 安全 yml security firewalls admin area pattern admi
  • Laravel 5 配置语言环境,不起作用

    已完成的修改 on 配置 应用程序 php locale gt env APP LOCALE en fallback locale gt en on env APP LOCALE pt 我也复制了 资源 lang en文件到 资源 lang
  • 我们可以在 Bash 脚本中使用 PHP 吗?

    我有一个 bash 脚本abcd sh bin sh for i in seq 8 do ssh w i uptime ps elf grep httpd wc l free m mpstat done pid sleep 1 kill 9
  • 如何在 SQLite 中获取最后插入的 ID?

    SQLite 中是否有任何内置函数可以获取最后插入的行 ID 例如 在 mysql 中我们有LAST INSERT ID 这种功能 对于 sqlite 任何可用于执行相同过程的函数 请帮我 Thanks SQLite 这可以使用SQLite
  • 如何接收发送到 twilio 号码的短信

    我在 twilio 创建了一个免费帐户 用于通过我的网站发送短信 注册后 我得到了一个 twilio 号码 例如 XXX XXX XXXX 我可以向手机号码发送消息 但我不知道如何使用这个 twilio 号码接收短信 请帮我解决这个问题 T
  • PHP正则表达式替换链接url

    我需要添加href 之前http 如果这http 不遵循href or src 以下代码部分有效 部分意味着它考虑 a href 只但不src a s i a href target blank gt 0 a str 预先感谢各位的回复 s
  • phpenmod 显示其他 php 版本的路径

    我的 Ubuntu 机器上安装了 php 7 0 和 7 2 当我执行时php v 它告诉我我正在使用 php 7 2 在 Apache 上我还启用了 php 7 2 当我跑步时phpenmode zip 我明白了 WARNING Modu
  • 根据重复值对 PHP 数组进行排序

    我有一个包含重复值的数组 我想对数组进行排序 以便重复次数最多的值出现在行中的第一个 这是我的数组的示例 array 1 2 3 2 1 2 2 我想对该数组进行排序 以便它根据重复项的数量对自身进行排序 如下所示 array 2 1 3
  • PHP 中正确的存储库模式设计?

    前言 我尝试在具有关系数据库的 MVC 架构中使用存储库模式 我最近开始学习 PHP 中的 TDD 并且我意识到我的数据库与应用程序的其余部分耦合得太紧密 我读过有关存储库并使用国际奥委会容器 http laravel com docs 4
  • Symfony2 - 在自定义验证器中调用 EmailValidator

    我正在创建一个自定义验证器约束来验证 联系人 类似于 John Doe 电子邮件受保护 gt 遵循Cookbook http symfony com doc current cookbook validation custom constr
  • PHP + MySQL 队列

    我需要一个充当队列的简单表 我的 MySQL 服务器限制是我不能使用 InnoDB 表 只能使用 MyISAM 客户 工人将同时工作 他们每次都需要接受不同的工作 我的想法是执行以下操作 伪代码 job lt SELECT FROM que
  • Yii2 无效调用:设置只读属性

    我有一个Post具有多对多关系的模型Tags 在 Post 模型中定义 public function getTags return this gt hasMany Tags className id gt tag id gt viaTab
  • 单元测试和静态方法

    阅读并学习单元测试 试图理解以下帖子 http misko hevery com 2008 12 15 static methods are death to testability 这解释了静态函数调用的困难 我不太清楚这个问题 我一直认
  • 突出显示单词并提取其附近文本的函数

    我有一个文本例如 Etiam porta semmalesuada magna mollis euismod 整数取数 ante venenatis dapibus posuere velit aliquet 埃蒂亚姆 门塔 塞姆 male
  • jQuery appendTo(), json 在 IE 6,7,8 中不起作用

    我这两天绞尽脑汁想找到解决办法 我使用 jQuery ajax 从数据库中获取值 以便在另一个框发生更改时更新一个框 php 脚本从数据库中获取值 然后输出 json 它在 FF 中工作正常 但在所有版本的 IE 中 选择框都不会更新 我已

随机推荐

  • Android:编译 9 补丁文件以在可绘制文件夹之外使用?

    我需要从可绘制文件夹外部加载 9 个补丁文件 例如 这样我的应用程序就可以从服务器下载新的皮肤 我发现在制作 apk 时 会编译存储在可绘制文件夹中的 9 补丁图像 从资产文件夹中读取的完全相同的文件没有 9 补丁块 因此 制作 apk 的
  • 将 X.509 证书从十六进制形式转换为 .cer 格式

    如何将 X 509 证书从十六进制转储形式转换为 CER 格式 此外 是否应该首先从十六进制转储中删除空格分隔符 谢谢 你可以使用ASN 1 编辑器 它有一个数据转换器 可以将 HEX 格式的数据转换为 PEM 格式的数据 源代码也可用 因
  • C# 解密加密文件时出现“Bad Data”异常

    嘿 我对加密和解密很陌生 说实话 甚至对 C 语言也很陌生 基本上 我有一个 TCP 聊天服务器 可以 保存 日志并加密文本文件 这就是我加密的方式 基于 MSDN 示例 public static void EncryptFile str
  • 使用mechanize登录megaupload

    我正在尝试使用以下代码登录megaupload 我的问题是 如何才能成功登录 我在代码末尾打印出当前的 URL 但是当我运行脚本时 它只返回 www megaupload com import mechanize import cookie
  • 检索和使用 tkinter 组合框选择

    我正在为一个定制计算器组装一个 GUI 它可以自动将某些测量单位转换为其他测量单位 我想返回所选的实际文本 以便我可以根据用户选择的任何内容编写 if 语句 如何让 python 返回实际值而不是我现在得到的值 每当我测试此代码时 我都会收
  • 为什么 AES 的不同实现会产生不同的输出?

    我觉得我对哈希函数及其所涉及的契约有很好的理解 输入 X 上的 SHA1 将始终产生相同的输出 您可以使用 Python 库 Java 库或笔和纸 它是一个函数 它是确定性的 我的 SHA1 与你的 Alice 和 Bob 的相同 据我了解
  • Oracle返回count的最高值

    为清楚起见进行了编辑 因此 我使用 Oracle SQL Developer 并设置了相当基本的数据库 我正在尝试计算两个合并列的重复项总数 并返回数量最高的字段 我使用的是 Oracle IDE 19 2 1 这是我到目前为止所拥有的 s
  • Azure DevOps Nuget 管道步骤中的 Nuget 包描述

    是否可以为 Azure DevOps Pipeline 中添加的 NuGet 包添加描述 Azure DevOps Nuget 管道步骤中的 Nuget 包描述 众所周知 当我们打包 nuget 包时 csproj文件 nuget将从文件中
  • 对于 Marshmallow 或更高版本中的窗口类型 2010,Android 权限被拒绝

    我正在尝试做Chathead类型过度绘制通过安卓服务在我的应用程序上 如下图所示 这个聊天头应用程序适用于 Android 版本 5 或更低版本 kitkat 棒棒糖等 但我在 Marshmallow 和更高版本中尝试它 然后收到此错误 a
  • 绘制图形在 VB.net 中消失

    我有一个简单的程序 您可以使用 FillEllipse 和 FillRectangle 在屏幕上绘制 我的问题是 当您将另一个窗口拖动到屏幕的一小部分时 该部分将被删除 当您将另一个窗口拖过 放开 然后将其拖回时 就会发生这种情况 有没有什
  • 在 Python 中使用 rarfile 从 RAR 存档中提取单个文件

    我有一个包含 2 个文件的 RAR 存档 但我只想提取一个 我在另一个答案中发现我可以使用rarfile包 根据文档包含extract功能 但是 当我尝试运行脚本时 我得到了FileNotFoundError WinError 2 以及以下
  • 在脚本中使用电子表格标准函数?

    当我编写脚本并想要使用标准函数时 例如WEEKNUM 这是否可以直接进行 或者我是否必须通过以下方式将公式触发到另一个字段 setFormula formula 然后读取相关单元格的内容 您描述的方法确实可行 但根本效率不高 因为它需要多次
  • 如何使用scikit线性回归模型同时求解多个独立时间序列

    我尝试使用 sklearn 线性回归模型同时预测多个独立时间序列 但我似乎无法正确预测 我的数据组织如下 Xn是一个矩阵 其中每行包含 4 个观测值的预测窗口 yn是每行的目标值Xn import numpy as np training
  • 登录 google firebase 帐户时出现错误 16 问题

    如您所见 这是我的代码 主要是从谷歌文档复制的 用于谷歌登录身份验证 问题是 当我单击登录按钮时 它会抛出一个名为 16 的错误 抱歉发布图像 我在发布代码时遇到问题 希望有人可以帮助我解决此问题 依赖关系 对于火力基地 implement
  • 收到“阅读器关闭时调用 Read 的尝试无效”

    我有以下代码 此处使用伪值以提高可读性 其中第一个连接返回大量数据 数千行 SqlDataReader 通过以下方式一一读取它们reader Read 然后打开一个新连接以使用新值更新每一行 using SqlConnection conn
  • 如何在 VB.NET 窗体的默认实例中调用方法而不是实例化另一个方法?

    当实例化的类调用父表单类中的方法时 VB NET 启动表单类的一个新实例 而不是调用活动实例的方法 我如何告诉它我只有一个表单类的实例 或者我不想创建表单的新实例而只想调用已经处于活动状态的表单上的方法 这是使用线程时的一个经典问题 表单实
  • 反序列化派生类时如何忽略基类 JsonConverter?

    我有一个抽象基类 JsonConverter typeof Converter public abstract class TextComponent public bool Bold get set public TextComponen
  • 如何在WPF中使用调度程序定时器精确控制帧速率?

    当我尝试使用 System Windows Threading DispatcherTimer 实例控制 WPF 中的帧速率时遇到问题 为了尝试 DispatcherTimer 的有效性 我创建了一个简单的 WPF 演示 其中包含一个窗口
  • Mysql 按 24 小时间隔分组

    如何按时间间隔对表 Test 的记录进行分组 每天从 19 00 开始 到第二天 18 59 结束 表 测试 id creation date name 1 2014 01 01 17 52 27 a 2 2014 01 01 18 50
  • CodeIgniter 2.x 中的数据库驱动路由

    我正在创建一个站点 该站点将有很多需要添加到路由文件中的路由 800 显然我不想将这些路由一一手动添加到路由配置文件中 任何人都可以建议最佳实践 让我的路线自动从数据库加载 是否有合适的库 帮助程序可以执行此任务 适用于 2 x 版本 例如