【发布时间】:2013-10-05 07:56:10
【问题描述】:
问题
如果我没有足够的空间在 RAM 中分配数据并且我没有足够的空间将其复制到当前 FS 分区上,如何将数据写入文件开头? IE。我有一个100Mb 大小的文件,我的PHP 脚本中有30Mb 内存限制(不能以任何方式调整),我当前的FS 分区上只有50Mb 可用。我想在文件中添加 2-10 行(绝对小于剩余的 50Mb FS 空间)
一些背景
我知道XY-problem 并同意这种情况是正确的。但要重新考虑这种情况,我需要更改当前应用程序的重要部分(实际上,它来自以前的团队),并且可能是使用此文件的其他应用程序的 API。
我的尝试
我还没有找到解决方案。我以前的方法是 - 使用一些网络缓冲区(例如,连接到一些外部存储,例如 MySQL - 它位于另一台有足够空间写入文件副本的机器上)
问题
那么,当我没有足够的空间在 RAM 中分配数据并且没有足够的空间在 FS 上创建文件副本时,是否可以将数据写入文件的开头?使用网络(外部)存储是唯一的解决方案吗?
【问题讨论】:
-
@ComFreek - 不幸的是,我在那里没有找到所需的解决方案 - 但谢谢。我尝试过所有选项(即使
fopen($rFile, 'a+')和rewind(与fseek相同)都不起作用) -
仅供参考,我找到了C implementation,它似乎没有将整个文件加载到内存中。