メインコンテンツまでスキップ

ファイルマネージャーのファイルを自動で削除する

概要

ファイル操作系のSmartyプラグインを利用して、ファイルマネージャのファイルを自動で削除する方法について説明します。

今回は、以下のようなバッチ処理を実装します。

  1. 特定ディレクトリの配下に存在するファイルの一覧を取得する
  2. 最終更新日時が一週間以上前のファイルを削除する
  3. 削除したファイル一覧のログをCSV形式で出力し、ファイルマネージャに配置する

学べること

以下のファイル操作を行う方法について学ぶことができます。

  • 特定ディレクトリ内のファイル情報を取得する
  • ファイルを削除する
  • ファイルを追加する
  • テキストファイルに値を書き込む

前提条件

対象のディレクトリを準備する

ファイルマネージャーに以下の構成でディレクトリを作成します。

files/ltd
`-- file_plugins_tutorial
|-- assets # 削除対象のファイルを配置するディレクトリ
`-- logs # 削除ログファイル(CSV)を配置するディレクトリ

Image from Gyazo

ファイルの削除処理を実装する

バッチ処理を新規作成する

バッチ処理を新規作成します。
まずはファイルの削除処理を実装していきます。

[オペレーション] -> [バッチ処理]をクリックします。

Image from Gyazo

[追加]をクリックします。

Image from Gyazo

バッチ処理の編集画面が開くので、以下を設定します。

項目
タイトルfile_plugins_tutorial
識別子file_plugins_tutorial
タイプ毎日 02:00
処理以下のコード
file_plugins_tutorial
{* Set the timestamp for comparison *}
{assign var='timestamp_to_compare' value='-1 week'|strtotime}

{* Read each file in the directory *}
{read_dir name='files_user' path='/files/ltd/file_plugins_tutorial/assets' file_var='file_info' type='file' recursive=true}
{* Get the file's update timestamp *}
{assign var='timestamp_updated_at' value=$file_info.mtime}
{* Compare the timestamps *}
{if $timestamp_updated_at < $timestamp_to_compare}
{* If the update timestamp is over a week ago, delete the file *}
{remove_file status_var='status' path=$file_info.path}
{/if}
{/read_dir}

Image from Gyazo

設定ができたら[追加する]をクリックしてバッチ処理を追加します。

備考

read_dirプラグインのパラメータ詳細はSmartyプラグインのドキュメントを参照してください。

ファイルの削除処理を動作確認する

バッチ処理の準備ができたら早速動作の確認をします。
バッチ処理の編集画面から[すぐに実行する]をクリックします。

Image from Gyazo

バッチ処理が実行され最終更新日時が一週間以上前のファイルが削除されます。

ヒント

すぐに確認がしたい場合は以下の'-1 week'部分を'-1 hour''now'等に変更して確認してください。
{assign var='timestamp_to_compare' value='-1 week'|strtotime}

ログファイルの出力処理を追加する

次に、ファイルを削除した際にログファイルを保存する記述を追加します。

バッチ処理を更新する

バッチ一覧のページでタイトルをクリックし、先ほど追加したバッチ処理を開きます。

Image from Gyazo

処理にログファイルの出力処理を追記します。
処理の全体は以下のようになります。

file_plugins_tutorial
loading...

設定ができたら[更新する]をクリックし、更新を反映します。

備考

write_file, date, put_fileの詳細はSmartyプラグインを参照してください。

ログファイルの出力処理を動作確認する

バッチ処理の編集画面から[すぐに実行する]をクリックします。

Image from Gyazo

バッチ処理が実行され最終更新日時が一週間以上前のファイルが削除され、ログがlogsディレクトリに残ります。

Image from Gyazo

Image from Gyazo

ヒント

すぐに確認がしたい場合は以下の'-1 week'部分を'-1 hour''now'等に変更して確認してください。
{assign var='timestamp_to_compare' value='-1 week'|strtotime}

以上で、設定と確認が完了しました。
ファイル容量の管理に是非ご利用ください。

関連ドキュメント


サポート

お探しのページは見つかりましたか?解決しない場合は、問い合わせフォームからお問い合わせいただくか、Slackコミュニティにご参加ください。