【问题标题】:PHP file processing, possible data corruptionPHP文件处理,可能的数据损坏
【发布时间】:2021-07-06 08:55:10
【问题描述】:

我有一个由 3 行组成的文件。 第一行是一个数据字符串第二个是一个数字第三个是另一个数字

两个 PHP 脚本同时运行。首先是在第一行和第三行写入数据。第二个是在第二行写入数据,正在读取第一行。

这是否会导致数据损坏,因为这两个脚本从来不会写在同一个地方?

【问题讨论】:

  • 为什么不制作 3 个不同的文件?如果您想继续使用这种方法而不是使用数据库
  • @the_nuts 你说得对,这绝对是我要做的
  • 这难道不会给您留下至少一个可以同时读取和写入的文件吗?
  • @Gordon 确实如此,但由于这是两个不同的操作,因此似乎没有问题。我测试了 512ko 的数据,每 1 毫秒同时读取和写入 2 分钟。没有任何数据损坏。不知道 PHP 是如何运行的,但它看起来相当健壮。

标签: php file data-corruption


【解决方案1】:

如果脚本 A 将数据写入第一行,而脚本 B 当前正在读取它,那么您确实可能最终得到该行的损坏数据。发生这种情况的机会取决于这些操作的频率。它可能很苗条。但从理论上讲,这可能会发生。

防止这种情况的最简单方法是使用

写入文件的脚本在要写入文件时必须获得排他锁。读取文件的脚本必须检查文件当前是否被锁定。如果是,则脚本可以等待文件再次被释放。

请注意,此方法假定文件只会被这两个 PHP 脚本更改。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多