Skip to content

API-001-7 パフォーマンス計測 ​

← API-一覧

概要 ​

日別記事テンプレート(DailyArticleTemplateController)実行をプロファイリングし、クエリ数・実行時間・メモリ・出力長などを JSON で返す開発・管理者向けエンドポイント。同機能のショートコードは SC-011。

入力(リクエスト) ​

register_route に args は定義しない。コールバック内でソフト読取する。

param必須型・制約説明
dateいいえ指定時は YYYY-MM-DD。省略時は最新日付計測対象日(LinkDayRepository::get_latest_date() フォールバック)
hallsいいえカンマ区切り文字列。省略時は下記デフォルト計測対象ホール。既定: アイランド秋葉原,エスパス秋葉原

出力(レスポンス) ​

成功時 data ​

field型説明
successboolean常に true
parametersobject{ date: string, halls: string }(適用された計測条件)
performanceobjectquery_count / execution_time / memory_usage / memory_usage_mb
output_lengthintテンプレート出力(ショートコード展開後)のバイト長

performance.top_5_queries(SQL 文と実行時間の上位 5 件)はローカル環境、または manage_options のときのみ付与。Local バイパス以外は manage_options 必須のため実質「管理者と Local 開発」限定であり、追加のデバッグフラグは設けない(Issue #3867 で判断)。

HTTP ステータス: 200

失敗・エラー条件 ​

条件レスポンス形式
date 形式不正{ "success": false, "error": { "message": "..." } }(400)
nonce なし・不正WordPress REST 標準(403)。Cookie 認証のみ
権限不足WordPress REST 標準(403)
レート制限超過WordPress REST 標準(429)
サーバー内部エラー{ "success": false, "error": { "message": "..." } }(500)

権限・nonce ​

名前空間共通事項は API-一覧 を参照。本エンドポイントは PerformanceMeasurementHandler + WordPressPerformanceMeasurementPermissionChecker を使用する(Issue #3867)。

認証経路nonce(wp_rest)capability
Cookie 認証(ブラウザ)必須(X-WP-Nonce ヘッダーか _wpnonce)manage_options
アプリケーションパスワード(rest_get_authenticated_app_password() が非 null)不要manage_options
Local バイパス(LocalRestBypassGuard)不要省略
  • アプリケーションパスワードは Cookie を使わないため CSRF の前提が無く、nonce を発行・送信する手段も無い。そのため nonce は求めず、manage_options とレート制限で守る。
  • Local バイパスは scripts/run-performance-test.sh(未ログインの curl)用。条件は LocalRestBypassGuard の PHPDoc を参照。

レート制限 ​

3 経路すべてに BotRestRateLimiter(Transient の固定ウィンドウ)で次の上限をかける。超過時は 429。カウンタを保存できないときは拒否する(重い処理のため fail-closed)。

単位上限バケット名
ログインユーザー(ID > 0 のとき)60 秒に 10 回performance-measurement:user
クライアント IP60 秒に 20 回performance-measurement:ip:<IP>

クライアント IP は RestClientIpResolver(USE_CLOUDFLARE_IP / TRUSTED_PROXY_HEADER / REMOTE_ADDR の順)で決める。Transient の get / set は原子的でないため、高並行時は上限をわずかに超えることがある。