我正在计划一个PHP网站架构。它将是一个访问量很少,数据量很小的小型网站。 数据仅由单个用户(管理员)修改。
为了简化操作,我不想打扰真正的数据库或XML数据。我想通过PHP序列化将所有数据存储到几个文件中。因此,例如,如果有几个类别,我将为每个类别存储一个包含Category
类实例的数组。
在这种情况下使用PHP序列化是否有任何陷阱?
答案 0 :(得分:2)
使用数据库 - 这并不困难,使用数据库可以很好地学习任何额外的时间。
我看到的陷阱正如Yehonatan所说:
1。维护和添加功能。
2。没有简单的查询或查看数据的方法
3。非常不安全 - 看看“hackthissite.org”。很多开始的例子都与黑客有关,有人把数据硬编码在文件中
4. 序列化适用于一个数组,即一个表。如果你必须做任何事情,比如父类别必须与其他数据相匹配,那么就不会那么好。
答案 1 :(得分:1)
维护和添加功能时会出现陷阱。
这是一种非常好的学习方式,但在课程结束后你会更喜欢数据库。
答案 2 :(得分:0)
如果您不想设置完整的数据库服务器,我会说使用像sqlite这样的小型数据库。但是我也会说序列化一个数组并将其存储在一个文本文件中是非常快速的。我不得不序列化一个包含几千条记录的数组(来自数据库的转储),并在我们的数据库服务器重建几天时将其用作临时数据库。
答案 3 :(得分:0)
我尝试实现PHP序列化来存储网站数据。对于那些想要做同样事情的人来说,这是几个月前开始的项目反馈,并且自那以后进行了大量修改:
优点:
非常容易加载和保存数据。我不必编写SQL查询,优化它们等等。代码更短(使用参数化SQL查询,它可能会增长很多)。
部署不需要额外的工作。 我们不关心Web服务器支持的内容:如果只有PHP而没有其他扩展,数据库服务器等,该网站仍然有效。 Sqlite是一件好事,但是无法在某些服务器上安装它,它还需要PHP扩展。
我们不必关心更新数据库服务器,也不必关心要使用的数据库服务器(从而避免客户想要从Microsoft SQL Server迁移到Oracle等的情况)。
我们可以向对象添加更多属性,而不必破坏所有内容(就像我们可以将其他列添加到数据库中一样)。
缺点:
就像克里在回答中所说,“没有简单的查询或查看数据的方法”。这意味着任何商业智能/统计案例都不可能或需要大量工作。顺便说一下,一些基本场景变得极其复杂。假设我们存储产品,我们想知道有多少产品。在我的情况下,它不仅仅需要编写select count(1) from Products
,而是需要为此创建一个PHP文件,加载所有数据然后计算项目数,有时通过手动添加内容。
实施数据迁移需要进行一些更改,这比执行SQL查询更加困难,需要更多工作。
总而言之,我建议使用PHP序列化来存储由单个人修改的小型网站的数据,仅当满足以下所有条件时才:
部署上下文未知,并且有可能拥有一个仅支持没有扩展的基本PHP的服务器,
没有人关心商业情报或信息的类似用法,
对数据结构影响很大的要求不会发生变化。