bucket-sort logo bucket-sort

プログラミングとインフラエンジニアリングの覚え書き

  • Posts
  • About
  • Contact
  1. Home
  2. All Posts
  3. Livewireのファイルアップロード一時ファイルは誰が掃除しているのか

Livewireのファイルアップロード一時ファイルは誰が掃除しているのか

Mar 14, 2026 Laravel bucket-sort

Livewire の FileUpload を使っていて、ふと素朴な疑問が浮かびました。

アップロード途中の一時ファイルって誰が消しているんだろう?

ユーザーがブラウザを閉じたり、フォーム送信前に離脱した場合、 一時ファイルがサーバーに残り続けるのでは…?という疑問です。

調べてみたところ、Livewire には 一時ファイルのクリーンアップ機構がきちんと実装されていました。 自分用の覚え書きとしてまとめておきます。

Livewire 一時ファイルの保存場所

Livewire の一時アップロードファイルは、以下の設定で保存先が決まります。

// FileUploadConfiguration.php
config('livewire.temporary_file_upload.disk') ?: config('filesystems.default')
config('livewire.temporary_file_upload.directory') ?: 'livewire-tmp'

つまり通常は

storage/app/livewire-tmp

のようなディレクトリに保存されます。

一時ファイルが作成されるタイミング

ユーザーがフォームでファイルを選択した瞬間に、 Livewire は以下のエンドポイントにリクエストを送ります。

POST /livewire/upload-file

この時点で

  • ファイルは UUIDの名前
  • livewire-tmp ディレクトリ

に保存されます。 つまり

  • フォーム送信前でも
  • 選択した瞬間に

すでにサーバーへアップロードされています。

一時ファイルの削除タイミング

Livewire の一時ファイルは、次のようなタイミングで削除されます。

ケース 削除方法
フォーム送信成功 $upload->store() によって本来の保存先へ移動し、livewire-tmp から消える
セッション中断(ブラウザを閉じるなど) 一時ファイルが残るが、次のアップロード時にクリーンアップが実行される
S3利用 Livewireは削除しない。S3のライフサイクルポリシーで管理する

ポイントはここです。

Livewireは「次のアップロード時」に古いファイルを掃除する設計になっています。

クリーンアップの条件

削除対象になるのは 24時間以上経過したファイル です。

つまり

  • 今日アップロードされた残骸 → 残る
  • 昨日以前の残骸 → 削除対象

という動作になります。

自動削除の設定

Livewire にはこの挙動を制御する設定があります。

livewire.temporary_file_upload.cleanup

デフォルトは

true

です。

もし false にすると、自動削除は行われません。

実装コード

クリーンアップ処理は以下に実装されています。

vendor/livewire/livewire/src/Features/SupportFileUploads/WithFileUploads.php

アップロード完了時に、次の処理が呼ばれます。

function _finishUpload(...) {
    if (FileUploadConfiguration::shouldCleanupOldUploads()) {
        $this->cleanupOldUploads();
    }
}

実際の削除ロジックは次のような感じです。

protected function cleanupOldUploads() {
    // 24時間前のタイムスタンプ
    $yesterdaysStamp = now()->subDay()->timestamp;

    // livewire-tmp のファイルを走査
    if ($yesterdaysStamp > $storage->lastModified($filePathname)) {
        $storage->delete($filePathname);
    }
}

つまり

  1. livewire-tmp を走査
  2. 24時間より古いファイルを削除

というシンプルな仕組みです。

まとめ

Livewire の一時ファイルのライフサイクルをまとめるとこうなります。

  1. ファイル選択時に /livewire/upload-file へアップロード
  2. livewire-tmp に UUID 名で保存
  3. フォーム送信成功で store() により移動
  4. 残骸は 次のアップロード時に 24時間以上のものを削除

つまり、 Livewire が自動的に掃除してくれる仕組みが最初から入っている ということでした。

こういう内部実装を知っておくと、

  • サーバーのストレージ管理
  • S3利用時の設計

などを考えるときにも安心できます。

Laravel Livewire FileUpload 一時ファイル ストレージ PHP
← Laravelのcan()メソッドの動き整理 [C#] アンマネージドリソースとは →

Related Posts

  • Laravel の Event / Listener で Pub/Sub を実装する Apr 2, 2026
  • PHP/Laravel で値の状態を判定するヘルパ関数まとめ Mar 30, 2026
  • Filament の dehydrated メソッドとは何か Mar 29, 2026
  • Laravelのレート制限(throttle:5,1)とは何か Mar 27, 2026

Table of Contents

  • Livewire 一時ファイルの保存場所
  • 一時ファイルが作成されるタイミング
  • 一時ファイルの削除タイミング
  • クリーンアップの条件
  • 自動削除の設定
  • 実装コード
  • まとめ

Recent Posts

  • Laravel の Event / Listener で Pub/Sub を実装する Apr 2, 2026
  • [C#] delegate と event の仕組みを整理する Apr 1, 2026
  • Pub/Sub パターンとは何か Mar 31, 2026
  • PHP/Laravel で値の状態を判定するヘルパ関数まとめ Mar 30, 2026
  • Filament の dehydrated メソッドとは何か Mar 29, 2026

Categories

  • AWS27
  • C#22
  • .NET20
  • Laravel16
  • Linux12
  • Apache8
  • MySQL8
  • PHP8
  • DynamoDB6
  • Nginx5
  • WordPress4
  • インフラ4
  • Hugo3
  • セキュリティ3
  • .NET Framework1
  • Aurora1
  • Filament1
  • Git1
  • SQS1

Tags

  • AWS
  • C#
  • .NET
  • Laravel
  • PHP
  • MySQL
  • セキュリティ
  • Linux
  • Apache
  • Code Snippet
  • DynamoDB
  • NoSQL
  • PHP-FPM
  • RDS
  • DoS
  • Nginx
  • Windows
  • WordPress
  • パフォーマンス
  • 監視
  • Amazon Linux 2023
  • CMS
  • Docker
  • Ipset
  • Iptables
  • OPCache
  • Webサーバー
  • 認可
  • Aurora
  • Blade
Powered by Hugo & Explore Theme.