Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/245.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将数据临时写入文件。PHP_Php_Fopen - Fatal编程技术网

将数据临时写入文件。PHP

将数据临时写入文件。PHP,php,fopen,Php,Fopen,我知道有一个函数可以创建一个临时文件,但这不是我想要做的。我想暂时将更改写入已存在并将继续存在的文件,然后稍后删除这些更改。我知道我可以写,写,写。我可以编写,然后稍后使用正则表达式删除这些更改,但我想知道是否有更好的方法。如果你不告诉我,我就结束这个问题 谢谢我会创建文件的临时版本(通过直接复制或使用其他方法),添加任何您想要的内容,然后在使用完副本后删除副本,然后再次使用原始文件。这似乎更安全,因为它可以确保您保持文件的原始版本不变,而不是修改文件并在尝试动态还原文件时可能出错。您可以利用

我知道有一个函数可以创建一个临时文件,但这不是我想要做的。我想暂时将更改写入已存在并将继续存在的文件,然后稍后删除这些更改。我知道我可以写,写,写。我可以编写,然后稍后使用正则表达式删除这些更改,但我想知道是否有更好的方法。如果你不告诉我,我就结束这个问题


谢谢

我会创建文件的临时版本(通过直接复制或使用其他方法),添加任何您想要的内容,然后在使用完副本后删除副本,然后再次使用原始文件。这似乎更安全,因为它可以确保您保持文件的原始版本不变,而不是修改文件并在尝试动态还原文件时可能出错。

您可以利用

在附加到文件之前保留原始文件。完成后,要恢复到原始状态,请再次打开文件,然后
ftruncate($f,$size)
恢复到以前的状态


通常您更愿意使用临时文件。

如果您对创建文件的“历史记录”数据库感兴趣,您可以编辑该文档,当您单击“保存”时,它会创建一个带有附加更改的文档的新版本,并将文件名添加到具有编辑日期的数据库中

这样,每当您对文档进行更改时,第一个文档将保持不变,您可以恢复以前所做的更改。为了更彻底,您可以为每个更改添加一个过期日期,以便它们随着时间的推移而过期,并且当您进行一些小更改时,您的服务器HD不会像疯了一样填满


编辑:虽然这实际上取决于您希望保留更改的时间。如果您打算将对文件的更改保留一段时间,我会使用一个数据库,其中包含每个重复的文件名及其编辑日期。

如果您可以
ftell
/
fseek
,为什么要使用正则表达式?您能给出一个将要进行的更改的示例吗?您计划如何根据需要从文件中删除的内容进行匹配?也许可以提供一些您试图实现的内容的上下文。写入某个随机文件,然后稍后删除更改,这似乎很奇怪。为什么不写入您自己的文件?使用
truncate()
这里听起来像哈基什语…;)