Skip to content

誕生日マスタ(db_birthday)スロカレシード導入手順

誕生日マスタテーブル(db_birthday)に、スロカレ「誕生日一覧」 のパチ・スロキャラ誕生日データを投入する手順です。Issue #1094 に対応します。


概要

  • テーブル: {prefix}db_birthday(誕生日キャラクターデータ)
  • 必要な作業:
    1. コード反映(デプロイ or git pull)
    2. PHP-DI キャッシュ削除(DI 変更のため)
    3. 初期データ投入(スロカレから取得して投入)
  • 既存テーブル: db_birthday は既存機能で利用されているため、テーブル作成は不要です。重複をスキップするには UNIQUE インデックスの追加を検討してください(下記「重複スキップについて」参照)。

利用条件・注意事項

  • データ取得元: スロカレ(Slot Calendar)誕生日一覧。実行前にスロカレの利用規約および robots.txt を確認のうえ、利用範囲内で実行してください。
  • 本スクリプトは User-Agent にサイト名・URL を含めず 汎用識別子(PHP/バージョン)のみを使用しています。
  • 再実行防止: WordPress Transients API で TTL=1 時間のクールダウンを設けています。実行後 1 時間は再実行できません(管理画面・CLI 共通)。テストなどで即時再実行する場合は下記「クールダウンリセット」を参照してください。

重複スキップについて

  • スクリプトは INSERT IGNORE で投入します。db_birthday に UNIQUE インデックスがある場合、その制約に応じて同一キーはスキップされます。
  • 目標構成: UNIQUE(month, day, chara, divi, title)。同一の月・日・キャラ名・区分(声優名含む)・作品名のみスキップされ、作品名や月日が異なる同名キャラは別エントリとして登録できます(Issue #2123)。
  • 自動移行: 管理画面初回読み込み時に BirthdaySeedInstaller が旧 UNIQUE(例: (chara, divi))を DROP し、上記 UNIQUE を追加します。詳細は 誕生日テーブル UNIQUE 自動移行 を参照。
  • UNIQUE インデックスがない場合は、重複行が挿入される可能性があります。

ローカル環境での導入手順

1. コードを取得

bash
# プロジェクトルート(myCustom)で
git pull origin develop
# または対象ブランチを checkout

2. PHP-DI キャッシュを削除

bash
# myCustom ディレクトリで
./bin/clear-php-di-cache.sh
  • キャッシュファイルは wp-content/cache/php-di/CompiledContainer.php です。

3. 初期データ投入

注意: 複数のプロセスから同時に実行しないでください。外部サイトへ HTTP リクエストを行うため、ネットワークが利用可能な環境で実行してください。

方法 A: 管理画面から実行(推奨)

WordPress 管理画面 → 設定誕生日シード を開き、「シード実行」ボタンをクリックします。処理件数・新規挿入件数と直近の投入レコードが表示されます。実行後は 1 時間のクールダウンがかかります。

方法 B: WP-CLI で実行(WordPress のドキュメントルートが app/public のとき)

接続手順は WP-CLI 接続手順 を参照してください。

bash
cd /path/to/app/public
wp eval-file wp-content/themes/cocoon-child-master/myCustom/scripts/seed-birthday-from-sulocale.php
  • 成功時は Processed N entries, inserted M new rows ... のような出力が表示されます。

クールダウンリセット(テスト時などに即時再実行する場合):

  • WP-CLI: wp transient delete birthday_seed_cooldown
  • MySQL(接頭辞が wp_ でない場合はテーブル名を読み替えてください): DELETE FROM wp_options WHERE option_name = '_transient_birthday_seed_cooldown' OR option_name = '_transient_timeout_birthday_seed_cooldown';

ローカルでホストの PHP を使う場合(WP-CLI が使えないとき): WordPress のドキュメントルート(例: app/public)で次を実行してください。

bash
# 実行場所: WordPress のドキュメントルート(例: app/public)
/opt/homebrew/bin/php -r "require 'wp-load.php'; require 'wp-content/themes/cocoon-child-master/myCustom/scripts/seed-birthday-from-sulocale.php';"
  • /opt/homebrew/bin/php は Homebrew で入れた PHP のパスです。環境により which php で確認したパスに読み替えてください。

本番環境での導入手順

1. デプロイ

bash
# プロジェクトルート(myCustom)で
./bin/build.sh
./bin/deploy.sh

2. 本番で PHP-DI キャッシュを削除

サーバー上の WordPress の wp-content ディレクトリ で:

bash
rm -f cache/php-di/CompiledContainer.php

3. 本番で初期データ投入

方法 A(管理画面から実行) はローカルと同様、管理画面(設定 → 誕生日シード)から実行できます。以下は CLI での実行方法です。

注意: 複数のプロセスから同時に実行しないでください。

方法 B: WP-CLI がある場合

接続手順は WP-CLI 接続手順 を参照してください。本番の WordPress ドキュメントルート で:

bash
wp eval-file wp-content/themes/cocoon-child-master/myCustom/scripts/seed-birthday-from-sulocale.php

方法 C: WP-CLI が無い場合

本番サーバーに SSH 接続したあと、WordPress のドキュメントルートに移動し:

bash
cd ~/public_html/あなたのドメイン
php -r "require 'wp-load.php'; require 'wp-content/themes/cocoon-child-master/myCustom/scripts/seed-birthday-from-sulocale.php';"
  • ドキュメントルートのパスおよびテーマパスは本番の構成に合わせて変更してください。
  • 成功時は Processed N entries, inserted M new rows ... と表示されます。

手順一覧(チェック用)

作業ローカル本番
コード反映git pull / git checkout./bin/build.sh./bin/deploy.sh
DI キャッシュ削除./bin/clear-php-di-cache.shサーバーで rm cache/php-di/CompiledContainer.php
初期データ投入wp eval-file .../seed-birthday-from-sulocale.php またはホスト PHP で実行本番: WP-CLI または php -r "require 'wp-load.php'; require '.../seed-birthday-from-sulocale.php';"

関連ドキュメント