通过MySQL数据库包含PHP代码(模块),这是个好主意吗?

3
主要的脚本包括“模块”,这些模块为其添加功能。每个模块都设置如下:
<?php
//data collection stuff
//(...) approx 80 lines of code
//end data collection
$var1 = 'some data';
$var2 = 'more data';
$var3 = 'other data';
?>

每个模块都有相同的变量,只是数据收集不同。

我在想,是否将模块数据以这种方式存储到MySQL中是一个合理的想法:

[database]
|_modules
  |_name
  |_function (the raw PHP data from above)
  |_description
  |_author
  |_update-url
  |_version
  |_enabled

你是否可以从数据库中获取PHP数据并执行它?比如,页面顶部有一个选项卡导航系统来显示每个模块的名称,在每个选项卡内部,页面内容将通过解析存储在数据库中的模块代码的function部分来实现。

这样做的目的是为了节省代码空间(减少行数),方便更新,并根据enabled选项包含/排除模块。许多其他Web应用程序也是这样工作的,我的一些也是如此。但我从未如此深入地考虑过这个问题。这种方法是否存在任何缺点或安全风险?

3个回答

2

我建议不要这么做。其中一个缺点是代码无法通过诸如e.g. APC的操作码缓存进行缓存。此外,在版本控制系统中管理代码并不容易。而且,当您想要进行单元测试、持续集成测试等时,这将变得更加麻烦。


1
例如MODx就采用了这种方法。PHP“片段”和模块都存储在数据库中。大多数PHP片段只是设置一些配置值,然后从服务器上的文件中包含主模块代码。
主要优点在于灵活性,因为所有模块都可以在CMS的后端进行编辑。另一方面,Wordpress也允许从后端编辑插件PHP代码,但是将所有内容都存储为服务器上的文件,而不是将PHP存储在数据库中。
嗯,不算是一个答案,但我认为这是个人口味问题。

1
我认为这个问题没有一个确定的答案。你所描述的方法会使某些应用程序受益,通常是像博客网站这样的小型网站。
将所有内容保存在服务器上的传统方式会使大型应用程序受益,因为读取服务器上的文件所需的时间比从数据库中检索它们要长。
所以这真的取决于你想要实现什么。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接