MENU

clean_dirsize_cache()

clean_dirsize_cache() は、指定されたマルチサイトのサイト(ブログ)における「アップロードディレクトリのサイズキャッシュ」を削除する WordPress 関数です。

マルチサイト環境では、ディスク容量制限を適用できるため、各サイトのアップロードサイズをキャッシュして処理の高速化を図っています。この関数はそのキャッシュを明示的にクリアしたいときに使用されます。

目次

基本構文

clean_dirsize_cache( $blog_id );
  • $blog_id に指定されたサイトの upload ディレクトリサイズのキャッシュを削除します。
  • 実際のディレクトリサイズは recurse_dirsize() により再計算されます。

引き数と戻り値

引き数説明
$blog_idintキャッシュを削除する対象のサイト(ブログ)ID
戻り値説明
なし(void副作用的に動作する。返り値はなし。

使用例

タグを使った使用例

$blog_id = get_current_blog_id(); // 現在のサイトIDを取得
clean_dirsize_cache( $blog_id );

このコードは、現在のサイトに保存されたアップロードファイルのサイズキャッシュを削除します。キャッシュが削除されると、次回ディスクサイズ確認時に再計算が実行されます。

注意点

マルチサイトでのみ有効

この関数はマルチサイト機能が有効でない環境では無意味です。

頻繁な使用は避ける

キャッシュ削除によりディレクトリサイズ再計算が走るため、大量のファイルがある環境ではパフォーマンスに影響します。

手動アップロード後に使用

FTPなどでファイルを直接アップロードした場合、キャッシュに反映されないためこの関数で明示的に削除する必要があります。

よく一緒に使われる関数

get_space_used()

clean_dirsize_cache( get_current_blog_id() );
$used = get_space_used(); // 使用済み容量(MB)を再計算して取得

ディスク容量を再取得する際にセットで使います。

upload_is_user_over_quota()

clean_dirsize_cache( $blog_id );
if ( upload_is_user_over_quota() ) {
    echo '容量制限を超えています。';
}

容量オーバー判定の前にキャッシュをクリアして精度を上げる。

switch_to_blog() / restore_current_blog()

switch_to_blog( $other_blog_id );
clean_dirsize_cache( $other_blog_id );
restore_current_blog();

他サイトのキャッシュを操作する際に必要。

想定されるトラブル

アップロードしたのに容量が更新されない

FTP経由や一括アップロードツールでファイルを追加した場合、キャッシュが更新されない。

解決方法

clean_dirsize_cache() を使用してキャッシュを明示的に削除。

容量制限を超えていないのにアップロードできない

古いキャッシュが残っていて、容量オーバーと誤認される。

解決方法

clean_dirsize_cache() + get_space_used() をセットで使って確認。

Q&A

通常のシングルサイトで使っても問題はない?

実行自体は可能ですが、意味はなく効果もありません(無視されます)。

キャッシュが自動で更新されることはある?

はい、WordPressは一定のタイミングで自動更新しますが、確実に反映したい場合は手動削除が推奨されます。

キャッシュ削除でファイルが削除されることはある?

いいえ、ファイルには一切影響を与えません。削除されるのは容量情報のキャッシュのみです。

まとめ

clean_dirsize_cache() は、WordPressマルチサイトにおけるディレクトリサイズのキャッシュを削除し、正確なディスク使用状況を再取得するために重要な関数です。

手動アップロードや不一致の解消、容量チェックの精度向上のために活用されます。特に、容量制限を運用している環境では、get_space_used()upload_is_user_over_quota() とセットで使うことで、正確なストレージ管理が可能となります。

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

目次