我这里有一个问题,我不确定是否可能,但我想在用户离开页面时删除文件......我目前有一个 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 分钟没有活动后删除文件。
只是一个想法。