在服务器上复制和编辑文本文件,并允许使用PHP临时下载?

在服务器上复制和编辑文本文件,并允许使用PHP临时下载?,php,Php,我希望能够复制服务器上的文本文件,根据用户输入对其进行编辑,并允许他们下载新文件,但在会话完成后或在一定时间内将其删除 我知道如何复制和编辑文件,但我不知道如何创建临时文件或临时目录,或者如何动态命名它们。。。如果多人同时制作文件,我不想在制作两个同名文件时遇到问题 我试过搜索,但我不确定该如何表达。我在PHP网站上看到过一些关于临时文件的页面,这些文件在PHP停止运行时会被删除,但这不允许用户下载文件 我想知道的是: -如何动态命名在一定时间后自动删除的服务器文件副本 编辑:对不起,我知道这可

我希望能够复制服务器上的文本文件,根据用户输入对其进行编辑,并允许他们下载新文件,但在会话完成后或在一定时间内将其删除

我知道如何复制和编辑文件,但我不知道如何创建临时文件或临时目录,或者如何动态命名它们。。。如果多人同时制作文件,我不想在制作两个同名文件时遇到问题

我试过搜索,但我不确定该如何表达。我在PHP网站上看到过一些关于临时文件的页面,这些文件在PHP停止运行时会被删除,但这不允许用户下载文件

我想知道的是:

-如何动态命名在一定时间后自动删除的服务器文件副本

编辑:对不起,我知道这可能比PHP更像是一个网站问题,但我对这两个都不熟悉

您可以使用
tempnam()
创建唯一的文件名:

还有
tmpfile()
,除了a)也创建文件并返回文件句柄而不是文件名,b)在
fclose()
或脚本结束时自动删除文件之外,它也执行相同的操作

如果要复制文件,则
tempnam()
可能是最合适的

您可以在脚本结束时手动删除这些文件,或者如果存在超过一天的文件,可以使用cronjob删除它们。如果您不能设置cronjobs,您可以创建一个“adminpage”,并每天或使用cronjob(或计划任务)从另一台机器获取它

回答问题“如何删除旧文件”:

首先,您可能需要将
tempnam()
$prefix
参数设置为“单独”目录。默认情况下,它通常使用
/tmp/
,其中包含许多其他内容。使用
/tmp/mydir/
(在写入之前确保检查它是否存在!)或主目录中的某些内容

之后,您有两种方法来查找和清理文件

第一种是使用
find
,这是一个强大的命令行工具,您可能会猜到,它可以查找文件。作为命令填写:

find /tmp/mydir/ -type f -and -mtime -1d -delete
简要说明:
-type f
表示只匹配文件(而不是目录),
-mtime-1d
表示只匹配修改日期为-1天前的文件。最后,
-delete
将删除该文件

find
功能强大且有用,但也可能有点让人望而生畏


另一种方法是编写自己的(PHP)脚本来搜索文件并调用它。您可以使用
scandir()
获取目录内容列表,并使用
stat()
获取有关文件的各种信息(如修改日期)。

谢谢,非常感谢您的回答。因此,
tempnam()
使用临时名称创建一个新文件。有没有办法复制一个文件?如果我写下我想复制到临时文件的内容,那会是一样的吗?哦,我想我现在明白你的意思了。我可以使用该文件名来复制文件,而不必实际使用创建的临时文件。还有,什么是工作?我现在也在谷歌上搜索…^是的
tempnam()
将为您创建一个文件名,然后您可以复制到此文件名。cronjob类似于Windows中的计划任务,这意味着它将每隔X分钟/小时/天自动执行一次任务。这是UNIX/Linux对话,抱歉:)当你像我一样使用UNIX时,它就成了你的第二天性。是的,我打赌。事实证明,000webhost有一个简单的添加cronjobs的小页面。我不熟悉unix或linux,所以这对我来说都是陌生的。我希望它每小时检查一次并删除超过一小时的文件。。。你知道我会怎么做吗?没有,只是煮咖啡:-)程序员是一个把咖啡因转换成代码的人:-)我更新了我的答案。