php / js - 当页面重新启动时如何删除文件?

时间:2012-06-01 15:21:11

标签: php javascript ajax onbeforeunload

我在这里有一个问题,我不确定是否可能,但我想在用户离开页面时删除文件...我目前有一个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"; 
    }
}
?>

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

您的主脚本/应用必须跟踪每个服务器请求中存储在数据库中的用户活动。

每x分钟运行一个由cron作业安排的php脚本,向DB请求最后一个用户活动(日期/时间)。在没有活动的y分钟后删除文件。

只是一个想法。

答案 1 :(得分:1)

从您的代码中看起来您正在创建一个临时文件,以便您可以在特定时间内将视频传送给特定用户。这是一种非常低效的方法。你会好起来的:

  1. 使用您的数据库跟踪哪些用户可以访问哪些视频,以及访问时长
  2. 在对视频页面的请求中,声明用户有权访问该文件,如果断言通过,则生成签名的URL ,该文件仅在短时间内有效并且可以在视频页面中使用它来传送您的电影。
  3. 签名网址如下所示:

    http://path.to/your/movie.m4v?timestamp=2309583240&signature=234p9345u234234092wjdfl
    

    其中timestamp是当前的UNIX时间戳,签名是时间戳的SHA1哈希值,只有您的应用程序知道某个秘密。

    Amazon S3支持此功能 - 您还可以使用有限的读取权限将电影文件存储在Amazon S3上,并使用众多流行的S3库之一为您的用户生成有时间限制的签名URL。

    这样可以避免在磁盘周围移动大文件,从而大大提高性能。它也会更好地扩展,因为最大并发查看器将不再与磁盘大小相关联。