1

ここに問題があります。可能かどうかはわかりませんが、ユーザーがページを離れたときにファイルを削除したいと思います...現在、ファイルの削除を処理する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"; 
    }
}
?>

何か案は?

4

2 に答える 2

1

メイン スクリプト/アプリは、サーバー リクエストごとに DB に保存するユーザー アクティビティを追跡する必要があります。

cron ジョブによってスケジュールされた php スクリプトを x 分ごとに実行し、最後のユーザー アクティビティ (日付/時刻) を DB に要求します。y 分間アクティビティがない場合、ファイルを削除します。

単なるアイデアです。

于 2012-06-01T15:28:12.093 に答える
1

コードからは、特定のユーザーに特定の時間ビデオを配信できるように、一時ファイルを作成しているように見えます。これは非常に非効率的な方法です。あなたはもっと良いでしょう:

  1. データベースを使用して、どのユーザーがどの動画にどのくらいアクセスできるかを追跡します
  2. ビデオ ページへのリクエストで、ユーザーがそのファイルにアクセスする権利を持っていることを表明し、アサーションが合格した場合は、短期間のみ有効で、ビデオ ページで使用できる署名付き URLを生成します。あなたの映画を届けます。

署名付き URL は次のようになります。

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

ここで、timestamp は現在の UNIX タイムスタンプであり、signature はタイムスタンプの SHA1 ハッシュと、アプリケーションだけが知っている秘密です。

Amazon S3 はこの機能をサポートしています。また、読み取り権限を制限して Amazon S3 にムービー ファイルを保存し、多くの一般的な S3 ライブラリのいずれかを使用して、ユーザー向けに時間制限付きの署名付き URL を生成することもできます。

これにより、大きなファイルをディスク上で移動する必要がなくなり、パフォーマンスが大幅に向上します。また、最大同時視聴者数がディスク サイズに関連付けられなくなるため、スケーリングも向上します。

于 2012-06-01T15:31:17.747 に答える