2020-05-27

Craft CMS でエントリを削除した時の Soft Delete 周りを確認してみた

Craft CMS でエントリを削除すると Soft Delete として扱われる。
先日削除周りのことを色々やっているときに @BUN @tinybeans に色々教えてもらった。

削除すると Soft Delete になって Garbage Collection のタイミングで削除される。

Soft Deletes | Craft 3 Documentation
https://docs.craftcms.com/v3/e...

Garbage Collection が実行されるのはサイトを訪問したり、管理画面を操作してる時らしく、どの頻度(確率)で実行されるかは 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
        ],
    ],
];

Soft Delete になってから softDeleteDuration で指定した間は Garbage Collection では削除されない。

Garbage Collection をコマンドとかで実行する時は

$ ./craft gc
Delete all trashed items? (yes|no) [no]:no

こんな感じで実行される。

デフォルトの no を選ぶと softDeleteDuration の間のものは削除されない。

Yes にすると全て削除される。

これは以下も同様で、 softDeleteDuration の状況をみずに削除される。

./craft gc --delete-all-trashed=1

./craft gc --interactive=0

デフォルトは 30 日で、 softDeleteDuration を 0 にすると削除されなくなる。