ガベージコレクション

Craft は古いデータを削除するためにいくつかのガベージコレクションルーチンを実行することがあります。

  • (コンフィグ設定 purgeUnsavedDraftsDuration ごとに)保存されていない下書きを削除します。
  • 期限切れのテンプレートキャッシュを削除します。
  • (コンフィグ設定 purgePendingUsersDuration ごとに)期限切れの保留中のユーザーアカウントを削除します。
  • (コンフィグ設定 softDeleteDuration ごとに)期限切れのソフトデリート行を完全に削除します。
  • 古いユーザーセッションデータを削除します。
  • (既に存在しなくなったエレメントに属する)孤立した検索インデックスを削除します。

デフォルトでは、すべてのウェブリクエストがガベージコレクションを発動する 100,000 分の 1 のチャンスを持っています。craft\services\Gc::$probability を上書きすることによって config/app.php から設定できます。

return [
    'components' => [
        'gc' => [
            'probability' => 0,     // no chance
            'probability' => 1,     // 1 in 1,000,000
            'probability' => 10,    // 1 in 100,000 (default)
            'probability' => 100,   // 1 in 10,000
            'probability' => 1000,  // 1 in 1,000
            'probability' => 10000, // 1 in 100
        ],
    ],
];

# 強制的なガベージコレクション

ターミナルコマンドを利用して、任意のタイミングでガベージコレクションを強制的に実行できます。

ターミナル上で Craft プロジェクトに移動し、次のコマンドを実行してください。

php craft gc

シェルが対話型である場合、Craft がすべての破棄済みアイテムを削除すべきかどうか尋ねられます。プロンプトで yes を入力した場合、まだ soft delete duration に満たないものでも、ソフトデリートされたすべてのデータベース行が即座に完全に削除されます。

delete-all-trashed オプションを利用して、すべてのソフトデリート行を強制削除することもできます。

php craft gc --delete-all-trashed=1