我正在寻找快速高效的数据存储来构建基于PHP的网站.我知道MySql.我可以在服务器根目录中使用JSON文件而不是MySQL数据库吗?如果是,最好的方法是什么?

推荐答案

您可以使用任何单个文件,包括JSON文件,如下所示:

  • Lock it somehow (google PHP file locking, it's possibly as simple as adding a parameter to file open function or changing function name to locking version).

  • 从文件中读取数据并将其解析为内部数据 struct .

  • (可选)修改内部数据 struct 中的数据.

  • If you modified the data, truncate the file to 0 length and write new data to it.

  • 尽快解锁文件,其他请求可能正在等待.

  • 您可以继续使用内部 struct 中的数据来呈现页面,但请记住,一旦您释放文件锁定并且其他HTTP请求可以修改它,它可能就会过期.

此外,如果您修改了用户web表单中的数据,请记住它可能在这段时间内被修改过.比如,加载带有用户详细信息的页面进行编辑,然后其他用户删除该用户,然后editertry 保存更改的详细信息,可能会出现错误,而不是重新创建删除的用户.

Note:这是非常低效的.如果您正在构建一个站点,其中预期的并发用户数量超过10个,则必须使用更复杂的方案,或者只使用现有的数据库……另外,数据不能太多,因为解析JSON和生成修改后的JSON需要时间.

只要你一次只有一个用户,它就会随着数据量的增长而变得越来越慢,但随着用户数量的增加,更多的用户意味着更多的请求和and更多的数据,事情开始变得越来越慢,很快你就会达到HTTP请求在文件可用于处理请求之前过期的极限...

At that point, do not try to hack it to make it faster, but instead pick some existing database framework (SQL or nosql or file-based). If you start hacking together your own, you just end up re-inventing the wheel, usually poorly :-). Well, unless it is just programming exercise, but even then it might be better to instead learn use of some existing framework.

Json相关问答推荐

使用JSONata将具有相同键的字典合并

JOLT转换过滤出特定值/对象

使用动态和可变JSON的图表多条

Jolt变换将字段移动到数组的每个元素中

使用json_query更新事实

使用 jolt 变换展平嵌套 JSON - 非常复杂

使用 jolt 变换压平具有公共列 JSON 的复杂嵌套

使用 JQ 获取 JSON 中的替代元素(输出:JSON 对象)

从 Inno Setup 中的 JSON 文件的每个对象中读取特定字符串

通过一个序列化器更新多个模型数据

如何在 wso2 中组合 2 个 json 有效负载?

如何在 powerapps 中将详细信息表单转换为 json?

Kotlin Android Room 处理 Moshi TypeConverter 中的空对象列表

如何将从嵌套 Select 返回的空值转换为空数组?

hook到 Decodable.init() 以获得未指定的键?

如何在不解析的情况下在javascript中同步包含JSON数据?

将 ES6 类对象序列化为 JSON

如何在 MVC4 中将 Json 字符串输出为 JsonResult?

如何向(JSON)对象的原型添加方法?

如何使用 Jackson 注释从 HttpResponse 反序列化 JSON 对象?