现在我面临的情况是我正在构建一个没有mysql或任何其他数据库的网站。 经过考虑,我选择使用Xml文件进行配置和数据存储(实际上我真的没有选择)。
我的问题是,如果不同的用户一次读取和修改相同的xml文件,是否会出现任何同步问题或其他问题? 如果有,是否有解决方案?
对于一个简单的子弹板系统,xml的性能如何(与使用mysql的同一系统相比)? 有关提高性能的任何提示吗?
答案 0 :(得分:0)
XML文件就像任何其他文件一样,如果两个人同时修改它,它们将会破坏彼此的数据。通常的解决方案是使用可以处理并发访问的数据库,例如,通过将数据分成可独立修改的记录。
如果你真的不能使用数据库(为什么?),解决方法是尝试将数据分成每个用户的单独文件,这样它们就不会发生冲突。但是,如果您的数据适用于多个不起作用的用户。
您可以使用XML数据库,但这仍然是一个数据库。此外,XML数据库通常针对文档存储进行优化,而不是配置和数据存储。
答案 1 :(得分:0)
是的,很可能会出现同步问题。
您是在UNIX / Linux上部署吗?如果是这样,我会做以下事情。每次编写文件时,都在同一目录中使用新的临时文件名创建文件。完成后,将文件重命名为您想要的文件,覆盖已存在的任何文件。
这会产生以下后果:
要摆脱垃圾文件,您可以从find
执行crontab
命令,查找超过一天的文件并匹配临时文件的名称架构并删除它们。
如果您确实需要锁定文件(即“读取,处理,写入”不应被其他进程中断),那么您可以使用操作系统提供的某些文件锁定API。编写临时“锁定”文件是危险的,就好像你的进程崩溃一样,然后它们将永远存在,然后什么都无法写入文件。