PHP / js - 如何在页面卸载时删除文件
php / js - how do I delete a file when the page unloades?
我这里有一个问题,我不确定是否可能,但我想在用户离开页面时删除文件......我目前有一个 php 脚本(见下文),可以处理文件的删除,但我不知道在页面卸载时如何运行它?
<?php
include 'js/db/db.php';
$film = $_GET['film'];
$movie = $_GET['org_film'];
$user = $_COOKIE['user'];
$filename = "movies/".$user."/".$film.".mp4";
if (file_exists($filename)) {
unlink($filename);
header('location: storage.php');
}
else{
$filename = "movies/".$user."/".$film.".m4v";
if (file_exists($filename)) {
unlink($filename);
header('location: storage.php');
}
else{
echo " file doesn't Exist";
}
}
?>
有什么想法吗?
从您的代码来看,您似乎正在创建一个临时文件,以便您可以在特定时间内将视频传递给特定用户。这是一种效率极低的方法。你会更好:
- 使用数据库跟踪哪些用户有权访问哪些视频以及访问多长时间
- 在对视频页面的请求中,断言用户有权访问该文件,如果断言通过,则生成一个签名 url,该 URL 仅在短时间内有效,并且可以在视频页面中用于交付您的电影。
签名 URL 如下所示:
http://path.to/your/movie.m4v?timestamp=2309583240&signature=234p9345u234234092wjdfl
其中时间戳是当前 UNIX 时间戳,签名是时间戳的 SHA1 哈希和一些只有应用程序知道的机密。
Amazon S3支持此功能 - 您还可以使用有限的读取权限将电影文件存储在 Amazon S3 上,并使用众多常用的 S3 库之一为您的用户生成有时间限制的签名 URL。
这将避免在磁盘周围移动大文件的需要,从而大大提高性能。它还可以更好地扩展,因为最大并发查看器将不再与磁盘大小绑定。
您的主脚本/应用程序必须跟踪存储在数据库中的每个服务器请求中的用户活动。
每 x 分钟运行一次由 cron 作业调度的 php 脚本,该脚本向数据库请求上次用户活动(日期/时间)。在 y 分钟没有活动后删除文件。
只是一个想法。
相关文章:
- 我是否可以检测到javascript正在被卸载(作为调试模式)
- 动态加载和卸载js文件
- 在页面卸载时写入HTML5 FileSystem API存储
- 如何禁用窗口.当计时器超时时,打开卸载警报
- 从jqueryajax加载php页面卸载当前页面
- 火灾在卸载前确认警报仅适用于外部站点
- 在火狐浏览器卸载之前
- 在窗口中单击按钮完成之前,光标不会停止.请继续卸载
- 卸载未触发组件WillUnmount的子级
- ReacJS与猴面包树,如何在卸载组件后释放光标
- 从ASP.NET MVC部分视图中卸载/删除javascript函数
- PHP / js - 如何在页面卸载时删除文件
- 反应如何在组件中正确删除列表器将卸载,为什么我需要在构造函数中绑定
- Firefox插件:如何在卸载插件时删除首选项
- 我似乎无法使用组件将卸载可靠地删除侦听器
- 如何删除body.当我们点击链接时卸载
- 以编程方式卸载/删除Firefox扩展
- 如何从智能电视卸载应用程序后删除本地存储数据
- 尝试'从iFrame'中卸载/删除内容;
- 卸载React时删除事件侦听器