创建临时文件并自动删除

mrb*_*lue 13 php temporary-files

我正在编写一个反向下载脚本,我的计划是创建一个临时文件,该文件由会话ID命名,然后在会话到期后,该文件将被自动删除.可能吗 ?你能给我一些如何用PHP做的提示吗?

非常感谢任何回复

The*_*zoo 12

PHP具有该名称tmpfile的函数.它创建一个临时文件并返回一个资源.资源可以像任何其他资源一样使用.

例如手册中的示例:

<?php
$temp = tmpfile();
fwrite($temp, "writing to tempfile");
fseek($temp, 0);
echo fread($temp, 1024);
fclose($temp); // this removes the file
?>
Run Code Online (Sandbox Code Playgroud)

关闭时(使用fclose())或脚本结束时自动删除该文件.您可以在资源上使用任何文件功能.你可以在这里找到这些.希望对你有帮助?

另一种解决方案是以常规方式创建文件,并使用cronjob定期检查会话是否过期.到期日期和其他会话数据可以存储在数据库中.使用该脚本查询该数据并确定会话是否已过期.如果是这样,请从磁盘中物理删除它.确保每小时左右运行一次脚本(取决于您的超时).


lee*_*ers 10

所以我们有一个或多个文件可供下载.为每个下载请求创建临时文件不是一个好主意.symlink()相反,为每个文件创建一个更好的主意.这将节省大量磁盘空间并降低服务器负载.

在用户会话之后命名符号链接是一个不错的主意.更好的想法是生成随机符号链接名称并与会话关联,因此脚本可以处理每个会话的多个下载.您可以使用session_set_save_handler()(链接)并注册read检查过期会话的自定义函数,并在会话过期时删除符号链接.