我在这里有一个问题,我不确定是否可能,但我想在用户离开页面时删除文件...我目前有一个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";
}
}
?>
有什么想法吗?
答案 0 :(得分:1)
您的主脚本/应用必须跟踪每个服务器请求中存储在数据库中的用户活动。
每x分钟运行一个由cron作业安排的php脚本,向DB请求最后一个用户活动(日期/时间)。在没有活动的y分钟后删除文件。
只是一个想法。
答案 1 :(得分:1)
从您的代码中看起来您正在创建一个临时文件,以便您可以在特定时间内将视频传送给特定用户。这是一种非常低效的方法。你会好起来的:
签名网址如下所示:
http://path.to/your/movie.m4v?timestamp=2309583240&signature=234p9345u234234092wjdfl
其中timestamp是当前的UNIX时间戳,签名是时间戳的SHA1哈希值,只有您的应用程序知道某个秘密。
Amazon S3支持此功能 - 您还可以使用有限的读取权限将电影文件存储在Amazon S3上,并使用众多流行的S3库之一为您的用户生成有时间限制的签名URL。
这样可以避免在磁盘周围移动大文件,从而大大提高性能。它也会更好地扩展,因为最大并发查看器将不再与磁盘大小相关联。