リクエスト詳細
✨ 既存アプリの改善
対応完了
対象アプリ: RPGストーリーフォージ AI風ドット絵冒険
MySQL永続接続(PDO::ATTR_PERSISTENT)によるDBアクセス高速化
1. 目的:
マップ移動・戦闘コマンド・シナリオ一覧取得などプレイ中に高頻度で発生するAjaxリクエストのたびに、PHPプロセスがMySQLへ新規TCP接続・認証を行っており、この接続確立コストが応答速度のボトルネックの一部になっている。DB接続を永続化(persistent connection)することで、接続確立のオーバーヘッドを削減し、マップ移動・戦闘・一覧表示を含むアプリ全体の体感速度を底上げする。
2. 具体的な仕様:
- lib.php の app_db() 関数内、PDO生成オプション配列に `PDO::ATTR_PERSISTENT => (bool)($c['persistent'] ?? true)` を追加する。既存の PDO::ATTR_ERRMODE / PDO::ATTR_DEFAULT_FETCH_MODE / PDO::ATTR_EMULATE_PREPARES の各オプションはそのまま維持し、追加のみとする。
- config.php の db 設定配列例に `'persistent' => true,` を追記し、共有ホスティング環境等で永続接続が問題を起こす場合は管理者が config.php で false に切り替えて即座に無効化できるようにする(デフォルトは true で有効)。
- app_db() 内の static $pdo によるプロセス内キャッシュ機構はそのまま維持する。永続接続はプロセス・リクエストをまたいだ接続再利用を担うもので、既存のstaticキャッシュと役割が重複せず併用可能。
- README的なコメントとして、config.php の該当箇所に「永続接続を使うとDB接続確立コストを削減できるが、環境によっては最大接続数に注意」という趣旨の日本語コメントを追加する。
3. 既存機能との整合:
- app_db() のシグネチャ・戻り値・呼び出し側コードは一切変更しないため、シナリオ保存・セーブロード・ライブラリ統計・マップ移動Ajax等、DBを利用する全機能に対して後方互換。
- persistent オプションが未設定の既存 config.php でもデフォルト true として動作し、明示的に false を指定すれば従来通りの非永続接続に戻せるため、既存環境を壊さない。
- try/catch による接続失敗時のフォールバック(nullを返す既存動作)はそのまま維持する。
マップ移動・戦闘コマンド・シナリオ一覧取得などプレイ中に高頻度で発生するAjaxリクエストのたびに、PHPプロセスがMySQLへ新規TCP接続・認証を行っており、この接続確立コストが応答速度のボトルネックの一部になっている。DB接続を永続化(persistent connection)することで、接続確立のオーバーヘッドを削減し、マップ移動・戦闘・一覧表示を含むアプリ全体の体感速度を底上げする。
2. 具体的な仕様:
- lib.php の app_db() 関数内、PDO生成オプション配列に `PDO::ATTR_PERSISTENT => (bool)($c['persistent'] ?? true)` を追加する。既存の PDO::ATTR_ERRMODE / PDO::ATTR_DEFAULT_FETCH_MODE / PDO::ATTR_EMULATE_PREPARES の各オプションはそのまま維持し、追加のみとする。
- config.php の db 設定配列例に `'persistent' => true,` を追記し、共有ホスティング環境等で永続接続が問題を起こす場合は管理者が config.php で false に切り替えて即座に無効化できるようにする(デフォルトは true で有効)。
- app_db() 内の static $pdo によるプロセス内キャッシュ機構はそのまま維持する。永続接続はプロセス・リクエストをまたいだ接続再利用を担うもので、既存のstaticキャッシュと役割が重複せず併用可能。
- README的なコメントとして、config.php の該当箇所に「永続接続を使うとDB接続確立コストを削減できるが、環境によっては最大接続数に注意」という趣旨の日本語コメントを追加する。
3. 既存機能との整合:
- app_db() のシグネチャ・戻り値・呼び出し側コードは一切変更しないため、シナリオ保存・セーブロード・ライブラリ統計・マップ移動Ajax等、DBを利用する全機能に対して後方互換。
- persistent オプションが未設定の既存 config.php でもデフォルト true として動作し、明示的に false を指定すれば従来通りの非永続接続に戻せるため、既存環境を壊さない。
- try/catch による接続失敗時のフォールバック(nullを返す既存動作)はそのまま維持する。
💬 返信 (3)
🛠 開発を開始しました (機能追加 (rpg-story-forge))
ご要望ありがとうございます。AI 開発ワーカーが実装を開始します。
通常 5〜30 分で Pull Request を作成し、レビュー後にリリースされます。
ご要望ありがとうございます。AI 開発ワーカーが実装を開始します。
通常 5〜30 分で Pull Request を作成し、レビュー後にリリースされます。
📝 開発が完了しました
ご要望いただいた内容の実装が完了し、最終チェック段階に入りました。
レビュー (自動) → リリース、の流れで進みます。
もう少々お待ちください。
ご要望いただいた内容の実装が完了し、最終チェック段階に入りました。
レビュー (自動) → リリース、の流れで進みます。
もう少々お待ちください。
✅ リリース完了のお知らせ
ご要望いただいた「RPGストーリーフォージ AI風ドット絵冒険」を実装し、リリースいたしました。
【ご利用方法】
ダッシュボード: https://www.aiapps.jp/?action=dashboard
アプリ詳細: https://www.aiapps.jp/apps/show.php?slug=rpg-story-forge
デモ環境は 1 時間以内に自動構築されます:
https://www.aiapps.jp/demo/rpg-story-forge/
ご利用ありがとうございます!
ご要望いただいた「RPGストーリーフォージ AI風ドット絵冒険」を実装し、リリースいたしました。
【ご利用方法】
ダッシュボード: https://www.aiapps.jp/?action=dashboard
アプリ詳細: https://www.aiapps.jp/apps/show.php?slug=rpg-story-forge
デモ環境は 1 時間以内に自動構築されます:
https://www.aiapps.jp/demo/rpg-story-forge/
ご利用ありがとうございます!
Echo
Iris