作成日:2018-07-10, 更新日:2018-07-10
基本
方法はいくつかある。
・PHPでファイル一覧を取得して、条件にあうものを削除
・Linuxとかのコマンドを叩く
・LinuxとかのコマンドをPHPで叩く
Linuxとかのコマンド:tmpwatch
「tmpwatch」というコマンドがあるそうだ。
▼24時間アクセスがない「/tmp」以下をすべて削除
# tmpwatch 24 /tmp
※「秒」指定じゃなく「時間」指定
時間指定じゃなく分、日で指定したい
「m, h, d」で「分、時、日」を指定できる。
※指定なしは「時」になる。
▼10分
# tmpwatch 10m /tmp
▼24時間(省略時:「h」は省略可能)
# tmpwatch 24 /tmp
▼7日
# tmpwatch 7d /tmp
オプション
-u, –atime | 最終アクセス時刻 |
---|---|
-m, –mtime | 最終更新時刻 |
-c, –ctime | 最終ステータス変更時刻(パーミッション、所有者、グループ、または他のメタデータが変更された時刻) |
-M, –dirmtime | 最終ディレクトリ更新時刻 |
-a, –all | 全てのファイルを削除 |
-d, –nodirs | ディレクトリは削除しない |
-f, –force | root権限なくても削除を行う |
-l, –nosymlinks | シンポリックリンクは削除しない |
-q, –quiet | コマンドライン表示しない(エラー時のみ表示) |
-s, –fuser | fuserコマンドを使ってファイル状態を確認 |
-t, –test | テストモード(実際削除処理は走らない) |
-U, –exclude-user=user | 指定するユーザのファイルを削除対象外 |
-v, –verbose | 詳細モード |
-x, –exclude=path | 指定するファイル・フォルダを削除対象外にする |
PHPで叩く
$expire = 24*7; // 1週間:「秒」じゃなくて「時間」指定 $dir = APPPATH . '/tmp'; // -m:更新日、-d:ディレクトリは削除しない $cmd = 'tmpwatch -m ' . $expire . ' -d ' . $dir; exec($cmd);