【问题标题】:CakePHP Persistant Data Storage without Database (config file)?没有数据库的 CakePHP 持久数据存储(配置文件)?
【发布时间】:2013-12-23 00:56:37
【问题描述】:

我正在构建一个 CakePHP 应用程序,我想存储和修改一组可由管理员自定义的全局设置。这些设置只有一个共享实例,因此数据库中的单行似乎有点矫枉过正,感觉不对劲。我在想一个配置文件会更合适,并且正在查看 CakePHP 的 Configure::read 和 Configure::write 方法,但后一种方法不会持久化对配置文件的更改。

还有其他合适的或广泛使用的方法吗?或者我应该只使用一个单列的表(我的强迫症真的不想这样做!)

【问题讨论】:

  • 为什么不序列化一个数组并放入一个文件中

标签: php cakephp web-applications web web-config


【解决方案1】:

CakePHP 可以将更改写入文件,默认阅读器称为 PHPReader,它从 php 配置文件中读取。只需确保使用预期的格式。加载配置文件后,您可以使用上面列出的读取和写入函数来更改值,然后在完成后转储更改。

// Load my_config.php using the 'default' reader object.
Configure::load('my_config', 'default');

// Dump values into 
Configure::dump('my_config.php', 'default');

【讨论】:

  • 如果您使用我的建议来解决您的问题,那么正确的答案检查会很棒:D
【解决方案2】:

随着您添加功能,应用程序往往会获得更多设置,因此我通常会提前计划,而不是为应用程序当时具有的每个设置创建一个包含一列的表格,然后在添加更多设置时添加列,而是创建一个表格将设置存储为唯一的设置名称和值对:create table settings (id int unsigned primary key auto_increment, name varchar(255) unique not null, value varchar(255) not null)。因此,对于每个设置,您的数据库中都有一行。

【讨论】:

    【解决方案3】:

    您应该查看Redis store。它基本上相当于一个键值对配置文件,但它存储在一种数据库中,因此可以从任何地方访问它,以防您需要扩展。它也超级快。

    我发现将可变配置数据保存在文件中通常不是一个好主意,因为当您想将应用扩展到多台服务器时会带来大量问题。

    【讨论】:

      猜你喜欢
      • 2020-02-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-09
      • 2013-06-30
      相关资源
      最近更新 更多