読者です 読者をやめる 読者になる 読者になる

phpとか

自分用備忘録なので、自分が分かる程度にしか書いてません。

tmpファイル削除

fuelphpです。

ファイルアップロード機能があるサイト作成に関して、
いつもはcronで削除スクリプト回しているのですが、

今回はレンタルサーバなのでcronが使えない・・・

しょうがないので、beforeアクションで実行するtmpファイル削除処理をphpで実装しました。

ファイルアップロードの簡単な流れは以下です。

1.登録/編集ページで、ファイルを/tmpにアップロード(ajax

2.確認画面で更新時、/tmpにアップロードしたファイルを特定のディレクトリに移動

なので、アップロードしたけど更新しなかった(やめた)場合は/tmpにファイルが残ってしまいます。
長いこと放置するのは危険なので、削除します。

public static function tmpDel() {
        $oldDate = date("Y-m-d H:i:s", strtotime("-1 hour"));
        $files = glob(rtrim(TMPPATH, '/') . '/*');
        foreach ($files as $file) {
            $updateDate = date('Y-m-d H:i:s', $filemtime($file));
            if (strtotime($oldDate ) > strtotime($updateDate)) {
                $err = \File::tmpFileDel($file);
                if ($err !== '') {
                    return $err;
                }
            }
        }
        return '';
    }

現在時刻の1時間前より古いタイムスタンプのファイルを削除してます。

※「TMPPATH」は、/tmpの物理パスを定数で宣言してます。

実際の削除処理は下記の中でやってます。(存在検証とかunsetとか)

$err = \File::tmpFileDel($file);