gpt4 book ai didi

php - 空间不足时将数据写入文件开头

转载 作者:行者123 更新时间:2023-12-04 04:39:42 25 4
gpt4 key购买 nike

问题

如果我没有足够的空间在 RAM 中分配数据并且没有足够的空间将其复制到当前 FS 分区上,如何将数据写入文件的开头?即我有一个文件 100Mb尺码,我有 30Mb我的 PHP 脚本中的内存限制(不能以任何方式调整),我只有 50Mb在我当前的 FS 分区上可用。我想在文件中添加 2-10 行(它绝对小于剩余的 50Mb FS 空间)

一些背景

我知道 XY-problem并同意本案属实。但是要重新考虑这种情况,我需要更改当前应用程序的重要部分(实际上,它来自以前的团队),并且可能是使用此文件的其他应用程序的 API。

我的尝试

我还没有找到解决方案。我以前的方法是 - 使用一些网络缓冲区(即连接到一些外部存储,例如 MySQL - 它位于另一台有足够空间写入文件副本的机器上)

问题

那么,当我没有足够的空间在 RAM 中分配数据并且没有足够的空间在 FS 上创建文件副本时,是否可以将数据写入文件的开头?使用网络(外部)存储是唯一的解决方案吗?

最佳答案

假设您想将 2K 写入文件的开头,您唯一真正的选择是:

  • 打开文件
  • 从文件末尾读取尽可能多的内存
  • 将其写回文件 2K 后才开始读取
  • 继续前一个数据块,直到将文件 2K 的整个内容移向末尾
  • 把你的 2K 写在开头

  • 为了形象化:
    |------------------------|

    |-----------------XXXXXXX|
    ------>

    |-------------------XXXXXXX|

    |----------XXXXXXX---------|
    ------>

    |------------XXXXXXX-------|

    ...repeat...

    请注意,这是一个非常不安全的操作,它会就地编辑文件。如果进程崩溃,您将得到一个处于不一致状态的文件。如果您没有足够的磁盘空间来复制文件,您可以说不应该使用该文件并首先扩展您的存储容量。

    关于php - 空间不足时将数据写入文件开头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19077522/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com