代码之家  ›  专栏  ›  技术社区  ›  Arseni Mourzenko

PHP序列化是否是存储单个用户修改的小型网站数据的好选择?

  •  3
  • Arseni Mourzenko  · 技术社区  · 14 年前

    我正在计划一个PHP网站架构。它将是一个小网站,只有很少的访问者和少量的数据。 数据仅由单个用户修改 (管理员)。

    为了使事情更简单,我不想为真正的数据库或XML数据操心。我考虑通过php序列化将所有数据存储到几个文件中。因此,例如,如果有几个类别,我将存储一个包含 Category 每个类别的类实例。

    在这种情况下,使用PHP序列化有什么陷阱吗?

    4 回复  |  直到 9 年前
        1
  •  2
  •   Kerry Jones    14 年前

    使用数据库——这并不难,任何额外的时间都可以很好地了解数据库的使用。

    我看到的陷阱如叶纳坦所说:

    1。 维护和添加功能。
    2。 不容易查询或查看数据。
    三。 非常不安全——看看“hackthissite.org”。许多开始的例子都与黑客行为有关,有人把硬编码的数据放在文件中。
    4。 序列化将对一个数组有效,即一个表。如果你必须做一些类似的事情,比如让父类别与其他数据相匹配,那么效果就不那么好了。

        2
  •  1
  •   Yehonatan    14 年前

    当维护和添加功能时,陷阱就会出现。

    这是一个很好的学习方法,但是你会在课后更欣赏数据库。

        3
  •  0
  •   Jonathan Kuhn Reignier Julien    14 年前

    如果您不想设置完整的DB服务器,我会说使用像sqlite这样的小型数据库。不过,我也会说,序列化数组并将其存储在文本文件中非常快。我必须序列化一个包含几千条记录的数组(从数据库中转储),并在重建数据库服务器几天时将其用作临时数据库。

        4
  •  0
  •   Arseni Mourzenko    13 年前

    我试图实现PHP序列化来存储网站数据。对于那些想做同样的事情的人,以下是几个月前开始的项目的反馈,从那时起进行了大量修改:

    赞成的意见:

    • 它是 非常容易加载和保存数据 . 我不需要编写SQL查询、优化它们等。代码更短(对于参数化的SQL查询,它可能会增长很多)。

    • 部署不需要额外的工作。 我们不关心Web服务器上支持的内容 :如果只有没有附加扩展名、数据库服务器等的PHP,则该网站仍然可以工作。sqlite是一件好事,但在某些服务器上安装它是不可能的,而且它还需要一个php扩展。

    • 我们不必关心更新数据库服务器,也不必关心要使用的数据库服务器(从而避免客户希望从Microsoft SQL Server迁移到Oracle等场景)。

    • 我们可以向对象添加更多的属性,而不必破坏一切(就像我们可以向数据库添加其他列一样)。

    欺骗:

    • 正如克里在回答中所说,有 “不容易查询或查看数据” . 这意味着任何 商业智能/统计案例是不可能的 或者需要大量的工作。顺便说一下,一些基本场景变得非常复杂。假设我们存储产品,我们想知道有多少产品。而不仅仅是写作 select count(1) from Products 在我的例子中,它需要为此创建一个PHP文件,加载所有数据,然后计算项目的数量,有时手动添加内容。

    • 实施所需的一些更改 数据迁移 这比执行SQL查询更痛苦,需要做更多的工作。

    最后, 我建议使用PHP序列化 用于存储个人修改过的小网站的数据 仅当以下所有条件均为真时 :

    1. 部署上下文未知,有可能有一个服务器只支持基本的PHP,没有扩展名,

    2. 没有人关心商业智能或类似的信息用途,

    3. 对数据结构有很大影响的需求不会发生变化。