2017-04-09 3 views
2

ファイルを作成したいと思います。 私のコードは次のとおりです。PHPファイルを作成して1時間、1週間などの後に削除します

$timeForDelete=$_REQUEST['timeForDelete']; 
$text=$_REQUEST["text"]; 
$filename = uniqid(rand(), true) . '.txt'; 
if($timeForDelete =="2"){ 
//how save text to file and auto delete file after one hour? 
} 
else{ 
    $f=fopen($filename,'a'); 
    fwrite($f,$text); //write to file 
} 

$ timeForDelete == 2場合:どのように私は一時間後にファイルや自動それを削除するテキストを保存することができますか? この問題の解決にお役立てください。ありがとう。

+2

ファイル作成日時を定期的にチェックし、必要があれば削除するcronジョブが必要になります – peter

+0

例を挙げてください。 –

答えて

3

リクエストしていることを実行するにはいくつかの方法があります。 私はこれを行うための最も簡単な方法は、あろうことを示唆している:

  1. を削除(およびあなたの質問、名前でおそらくタイムスタンプの後に基づいてする必要があるものとして一意に識別された名前のファイルを作成します1時間、1週間など)
  2. 作成された時間に基づいてその一意の識別子を含むすべてのファイルを削除するスクリプトを作成します。
  3. 5分ごとにスクリプトを実行し、必要のないファイルをクリーンアップするようにクローンジョブを設定します。
2

cronが実行するスクリプトの例を挙げてみましょう。 Linuxシステムで残念ながら

http://php.net/manual/en/function.filemtime.php

我々は、ファイルの作成日時を取得することはできませんので、fmtimeは私たちの最善の策です。詳細はfmtimeの下のwikiを読んでください。

注:これだけの簡単な例である

リストディレクトリ内のすべてのファイル:(/パス/に/あなた/スクリプト/ yourscript.php)

//assuming files are stored in /path/to/your/script/myfiles 
    $path = realpath(dirname(__FILE__)) . '/myfiles'; 
    $files = array_diff(scandir($path), ['.', '..']); 
    //assuming all your files are in $paths top level 

    foreach($files as $file){ 
     //unix time 
     $ctime = fmtime($path . "/$file"); 
     //basic math 
     if(time() > $ctime){ 
      unlink($path . "/$file"); 
     } 
    } 

あなたのcronジョブ

OSのようなUNIXを実行している場合:

5分ごとに実行されます。

#invoke the intepreter 
*/5 * * * * php /path/to/your/script/yourscript.php 

編集:

また、ファイルの作成を追跡するためのデータベースでこれらのファイルのアップロード時間を節約することができますあなたは

crontab -e 

のcrontabにこれを追加し、保存を再構成することができます日付

+0

ファイルの作成タイムスタンプをファイル名に含めるか、削除タイムスタンプを付けると、可変長の削除期間があれば簡単に識別できます。 データベースを使用してファイルと削除時間をリストする場合、これはおそらく最も簡単です。 –

+0

はい@O Gentheは解決策です – peter

+0

@peterでは、私の最も優秀な解決策はありません。これは実際には非常に幅広い質問であり、実行可能なソリューションに到達するための多くの作業です。あなたはあなたの答えに多くの作業を入れており、それはデータベースコンポーネントで最も効果的です。 –

関連する問題