Appearance
ADM-013-2 birthday_seed_run_by_url(指定 URL でシード実行)
概要
スロカレの作品アーカイブ URL(https://sulocale.sulopachinews.com/archives/<数字>)を指定してデータを取得し db_birthday へ一括投入する。実行中(全件シード・REST 取込を含む)はブロックされる。1 時間のクールダウンは全件シード(ADM-013-1)のみで、URL 指定取得には掛からない(Issue #3892)。
POST パラメータ
| フィールド | 必須 | 型・制約 | 説明 |
|---|---|---|---|
action | ○ | 文字列 | birthday_seed_run_by_url |
nonce | ○ | 文字列 | birthday_seed_admin で発行した nonce |
url | ○ | 文字列(非空、sanitize 後も非空) | シードデータ取得先 URL |
成功時 data
| 論理名 | 物理名 | 型 | 説明 |
|---|---|---|---|
| メッセージ | message | string | BirthdaySeedMessages::URL_RUN_SUCCESS(処理件数・挿入件数を埋め込んだ文言) |
| 処理件数 | processed | int | シードサービスが処理したエントリ数(result['processed']) |
| 挿入件数 | inserted | int | DB に実際に挿入されたエントリ数(result['inserted']) |
| 挿入エントリ | fetched_rows_inserted | array | 取得行のうち挿入されたエントリ(result['inserted_entries']) |
| スキップエントリ | fetched_rows_skipped | array | 取得行のうちスキップされたエントリ(result['skipped_entries']) |
| 取得行総数 | fetched_rows_total | int | 取得行の総数(result['processed']) |
| 新規作成した作品名 | created_titles | array | 作品名マスタに新規作成された作品名(result['created_titles']) |
失敗・ブロック(success: false の data に含み得るキー)
| 条件 | message の内容 |
|---|---|
| AJAX コンテキストでない | Messages::AUTH_FAILED |
| nonce 不正 | Messages::AUTH_FAILED |
manage_options 権限なし | Messages::PERMISSION_DENIED |
url が空 | BirthdaySeedMessages::URL_REQUIRED |
| 実行中ロック取得失敗 | BirthdaySeedMessages::RUN_IN_PROGRESS |
URL 不正(ERROR_URL_INVALID) | BirthdaySeedMessages::URL_INVALID |
| 誕生日一覧ページではない | BirthdaySeedMessages::URL_PAGE_TITLE_INVALID |
取得失敗(ERROR_FETCH_FAILED) | BirthdaySeedMessages::FETCH_FAILED |
抽出 500 件超(ERROR_TOO_MANY_ROWS) | BirthdaySeedMessages::TOO_MANY_ENTRIES(1 件も登録しない) |
| 上記以外の例外 | BirthdaySeedMessages::RUN_FAILED(例外メッセージは返さない) |
補足: 例外時は例外クラス名とコードだけを error_log に [BirthdaySeedAdminPage][ajax_run_seed_by_url] 先頭で記録する。成功時は wp_options の birthday_sulocale_last_import_at に取込日時を記録し(ops-status/v1/birthday が参照)、finally で実行中ロック(BirthdaySeedRunLock::release())を必ず解放する。