PHP序列化是存储由一个人修改的小型网站数据的好选择吗

PHP序列化是存储由一个人修改的小型网站数据的好选择吗,php,serialization,architecture,data-access-layer,Php,Serialization,Architecture,Data Access Layer,我正在计划一个PHP网站架构。这将是一个访问者少、数据集少的小型网站。数据由单用户管理员专门修改 为了让事情变得更简单,我不想麻烦使用真正的数据库或XML数据。我考虑通过PHP序列化将所有数据存储到几个文件中。例如,如果有几个类别,我将存储一个数组,其中包含每个类别的类别类实例 在这些情况下,使用PHP序列化是否存在任何陷阱?在进行维护和添加功能时会出现陷阱 这是一个很好的学习方法,但在课程结束后,你会更加欣赏数据库。使用数据库-这并不难,任何额外花费的时间都可以通过使用数据库很好地学习 我看到

我正在计划一个PHP网站架构。这将是一个访问者少、数据集少的小型网站。数据由单用户管理员专门修改

为了让事情变得更简单,我不想麻烦使用真正的数据库或XML数据。我考虑通过PHP序列化将所有数据存储到几个文件中。例如,如果有几个类别,我将存储一个数组,其中包含每个类别的类别类实例


在这些情况下,使用PHP序列化是否存在任何陷阱?

在进行维护和添加功能时会出现陷阱


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

使用数据库-这并不难,任何额外花费的时间都可以通过使用数据库很好地学习

我看到的陷阱如Yehonatan所述:

一,。维护和添加功能。 2.没有简单的查询或查看数据的方法。 3.非常不安全-看看hackthissite.org。许多开始的例子都与黑客有关,有人将数据硬编码到文件中。
4.序列化将适用于一个数组,即一个表。如果你不得不做一些事情,比如让父类别与其他数据相匹配,那就不太好用了。

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

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

优点:

加载和保存数据非常容易。我不必编写SQL查询,优化它们,等等。参数化SQL查询的代码更短,它可能会增长很多

部署不需要额外的工作。我们不关心web服务器上支持什么:如果只有PHP而没有其他扩展、数据库服务器等,那么该网站仍然可以工作。Sqlite是一件好事,但在某些服务器上安装它是不可能的,它还需要一个PHP扩展

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

我们可以向对象添加更多属性,而无需中断所有内容,就像向数据库添加其他列一样

缺点:

正如克里在回答中所说,查询或查看数据并不是一个简单的方法。这意味着任何商业智能/统计案例都是不可能的,或者需要大量的工作。顺便说一下,一些基本场景变得极其复杂。假设我们储存产品,我们想知道有多少产品。在我的例子中,不只是从产品中编写selectcount1,而是需要为此创建一个PHP文件,加载所有数据,然后计算项目数,有时需要手动添加内容

实现数据迁移需要进行一些更改,这很痛苦,需要比执行SQL查询更多的工作

总之,我建议使用PHP序列化来存储由一个人修改的小型网站的数据,前提是满足以下所有条件:

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

没有人关心商业智能或类似的信息使用

对数据结构有重大影响的需求不会发生变化


这与是否欣赏数据库无关。我非常感谢他们,但我主要使用Microsoft SQL,部署服务器上不会提供。我总是可以使用Sqlite,但事实是,对于一个如此小的网站,我认为选择什么样的数据支持并不重要,我不想仅仅为了添加它而添加一个真正的数据访问层。