ワードプレスのメディアに保存した画像(upload_max_filesize, post_max_size, memory_limit)
Contents
画像はどこに保存される?
WordPressに画像をアップロードすると、2つの場所に情報が保存されます:
- サーバーのディレクトリ:実際の画像ファイルがここに保存されます。
- データベース:画像に関する情報(メタデータ)がここに記録されます。
データベースでの画像情報の記録
画像の情報は、WordPressデータベースのwp_posts
テーブルに保存されます。主な情報には以下のようなものがあります:
- ID:画像固有の識別番号
- post_author:アップロードした人
- post_date:アップロード日時
- guid:画像のURL
- post_type:「attachment」(添付ファイルの意味)
注意点:DB容量とPHPエラー
画像を何度も編集すると、派生画像がどんどん増えていきます。これには2つの潜在的な問題があります:
- DB容量の圧迫:多くの画像情報がデータベースに保存されるため、DBのサイズが大きくなります。
- PHPエラーのリスク:大量の画像データを処理しようとすると、PHPのメモリ制限に達し、エラーが発生する可能性があります。
対策
- 定期的に不要な画像や古い編集履歴を削除する
- 画像の最適化プラグインを使用して、ファイルサイズを小さくする
- 必要に応じてPHPのメモリ制限を増やす(ホスティング会社に相談が必要な場合も)
WordPress編集画面でのエラー
WordPressの編集画面で250枚の画像ブロックを追加すると、メモリ使用量が急激に増加し、PHPのメモリ制限に達してエラーが発生する場合があります。
エラーの原因は以下の点が考えられます:
- 大量の画像ブロックのレンダリングにメモリを大量に消費
- ページデータの保存時に、大量のデータを処理するためのメモリが不足
custom-php.ini
での設定
1)upload_max_filesize
:
- 影響: 単一のファイルアップロードに限定
- 症状: この値を超えるサイズのファイルをアップロードしようとすると、エラーが発生
- 注意点:
post_max_size
よりも小さい値に設定する必要がある
2)post_max_size
:
- 影響: ファイルアップロードを含むすべてのPOSTリクエスト
- 症状: この値を超えるデータを送信しようとすると、POSTデータが空になる
- 注意点: 通常、
upload_max_filesize
よりも大きい値に設定する
3)memory_limit
:
- 影響: PHPスクリプト全般(ページ編集、プラグイン処理、画像処理など)
- 症状: この値を超えるメモリを使用しようとすると、”Allowed memory size of XXXXXX bytes exhausted” エラーが発生
- アップロード時の問題: 主に
upload_max_filesize
とpost_max_size
に関連 - ページ編集・保存時の問題: 主に
memory_limit
に関連
PHPメモリについて
対策
memory_limit
をさらに増やす(例: 256M や 512M)- ページビルダーやエディタの設定を確認し、大量の要素を扱う際の最適化オプションがないか確認
- 画像の最適化: 画像サイズを小さくすることでメモリ消費を抑える
- ページを分割: 1ページに配置する画像数を減らし、複数ページに分ける
WordPressのメディアライブラリから画像を削除する際のデータベースへの影響
正常な削除プロセス:
- WordPressの管理画面からメディアを適切に削除した場合、以下の処理が行われます:
- サーバー上の画像ファイルが削除されます。
- データベースの
wp_posts
テーブルから該当する画像のエントリが削除されます。 - 関連する
wp_postmeta
テーブルのメタデータも削除されます。
データベースへの影響:
- 正しく削除された場合、データベースにデータが蓄積されることはありません。
- ただし、以下のような場合にデータが残る可能性があります:
- プラグインの干渉により完全な削除が妨げられた場合
- サーバーの権限設定により一部の削除操作が失敗した場合
- 大量の画像を一度に削除する際にタイムアウトが発生した場合
潜在的な問題:
- 不完全な削除によりデータベースに「ゴミデータ」が蓄積される可能性があります。
- これにより、以下のような問題が生じる可能性があります:
- データベースサイズの不必要な増大
- クエリのパフォーマンス低下
- 管理画面での表示の不整合
対策と推奨事項:
- 定期的なデータベース最適化:
- プラグイン(例:WP-Optimize, Advanced Database Cleaner)を使用してDBをクリーンアップ
- 不要なリビジョン、自動下書き、ゴミ箱内のアイテムを定期的に削除
- 大量削除時の注意:
- 一度に少量ずつ削除を行う
- メンテナンスモードを有効にしてから大規模な削除を行う
- ファイルシステムとデータベースの整合性チェック:
- 定期的にメディアファイルとデータベースの整合性をチェックするプラグインや スクリプトを使用
パフォーマンスへの影響:
- 毎年1000枚程度の画像を入れ替える程度であれば、適切に管理されている限り 大きな問題にはならないでしょう。
- ただし、削除操作中は一時的にサーバーの負荷が上がる可能性があるため、 サイトのトラフィックが少ない時間帯に実施することをお勧めします。