2009-08-01 10 views
3

私はスクリプトで作成された一時ファイルへのリンクを提供するphpスクリプトを持っています。私はその人にファイルをダウンロードさせたいが、ファイルを長時間サーバーに残さないようにする。 2分後にファイルを削除したいと考えています。これはどうすればできますか?PHPの時間の経過後のファイルの削除

答えて

8

ダウンロード直後に削除できます。ファイルの内容を出力してから、それを閉じてunlinkとします。

編集:例

$fo = fopen($f, 'rb') ; 
    $content = fread($fo, filesize($f)) ; 
    fclose($fo) ; 
} 
// Stream the file to the client 
header("Content-Type: application/octet-stream"); 
header("Content-Length: " . strlen($archive)); 
header("Content-Disposition: attachment; filename=\"myfile.exe\""); 
echo $archive; 
unlink($f); 
+0

これは素晴らしいですが、どのようにファイルの内容を出力できますか?私は、ダウンロードされるファイルが実際にはC++コンパイルの結果であった実行可能ファイル(.exe)だと言っていました。ユーザーにexeファイルのダウンロードを許可するにはどうすればよいですか? – QAH

+0

バッファに書き込む前に適切なヘッダー 'header( 'Content-Type:application/octet-stream');を送信します。 –

+0

QAH、streetpcが言っていることは、ファイルへのリンクを提供していないことです。代わりに、元のスクリプトは、ファイルを生成し、上記のコードでユーザーに出力する必要があります。または、上のようなスクリプトへのリンクを出力してファイルを削除することもできます。 – bmb

2

は、あなたのクリーニングスクリプト数分おきに実行するためにcronジョブを設定します。 filemtime()関数を使用してファイルが作成されたときを確認し、そのファイルが「十分古い」とみなされる場合は削除することができます。

関連する問題