将文本存储在PHP数组或MySQL数据库中


Store text in PHP array or MySQL database?

假设我有50页,我想为其中的30页写一个描述。

描述将在每页上大约两个段落。

如果我将描述保存在 MySQL 数据库中,然后在每个页面上查询以查看是否有相应的描述,对我的服务器来说是否更有效率,或者最好将它们存储在 PHP 文件的数组中并查看该元素是否存在?

额外信息:我会手动编辑数组文件或通过 phpMyAdmin 编辑数据库条目,这两者都需要相同的时间。此外,只有我编辑它们,所以我不必担心制作快速编辑文件。

这样做:

将它们存储在一个数组中,以以下形式存储在一个单独的文件中data.php

<?php
return array(
  // here be data
);

在调用方脚本中,您可以像这样使用它:

$data = require 'data.php';

然后根据需要在整个站点中使用 $data 变量。您还可以拆分数组并根据特定条件使用多个文件,例如"语言"或"文章类别"或其他。

如果这样做,则始终可以插入带有Web界面的编辑器来编辑该数组并将其存储回file_put_contents('data.php', '<?php return '. var_export($data));,例如,$data在处理POST表单后获得了其值,该表单是从旧值生成的$data

非常优雅,快速且可维护!

作为奖励,围绕这些序列化、反序列化等编写帮助程序函数,这样,如果您改变主意(因为您的网站在增长并且您最终会得到数百个这样的数组),您只需重新实现这些函数即可使用数据库后端,而无需触及代码库的其余部分

代码可重用性和可维护性达到顶峰!如果需要,您可以立即启动并运行它,而不会失去将来使其更好的前景

如果您不经常更改这些描述,则可以将它们存储在数组中。但是最好将它们保存在单独的文件中,而不是将它们全部保存在一个 PHP 文件中。

但是您的服务器可以轻松处理这种小行。所以做你容易的事。

也许您可以将它们存储在数据库中以添加/编辑内容,并对其进行缓存以从您的页面读取。

我会将信息存储在数据库中。它更慢,但更优雅。如果要使用数组执行此操作:

Class Page
{
    // global configuration
    private static $config = null;
    // individuel configuration
    public $title, $content;
    // constructor
    function __construct($page) {
        // get the configuration
        $config = self::getConfig();
        // cheack weather the page exists
        if(!isset($config[$page]))
            die('unknown page "'.$page.'"');
        // set some stuff
        $this->title = $config[$page]['title'];
        $this->content = $config[$page]['content'];
    }
    // get the configuration
    private function getConfig() {
        if(self::$config === null)
            self::$config = include(dirname(__FILE__) . '/config.php');
        return self::$config;
    }
}

配置:

return Array(
    'home' => Array(
        'title' => 'Welcome!',
        'content' => 'Welcome to my site!' /* maybe include some html for complxe stuff */
    )
);

例:

$myPage = new Page('home');
echo $myPage->content;