モジュールのインストール時に (1 回だけ) いくつかのことを行う必要があるモジュールを作成しています。やらなければならないことがたくさんあるかもしれませんが、私がやらなければならない最も基本的なことは、サーバーへの API 呼び出しを行って、モジュールがインストールされたことを外部サーバーに知らせ、いくつかの更新された構成を取得することです。アイテム。
私はstackoverflowでこの質問を読みましたが、私の状況では、データベース、フィクスチャ、テーブルの更新などとは関係のないコードの実行に本当に興味があります。また、明確にするために、このモジュールは影響しません(効果?)フロントエンド。参考までに、私はAlan Storm によるこの素晴らしい記事も読みましたが、インストール/アップグレード スクリプトはランダムな PHP を実行するためのものではないということを思い知らされるだけです。
私の考えでは、これを達成するためのいくつかの可能な方法があります。
- ベストプラクティスではないのではないかと恐れていることを行い、セットアップ/インストールスクリプトにPHPを追加して、このphpを実行します
- 必要なタスクを一度だけ実行するある種のcronジョブを作成します(これがどのように機能するかはわかりませんが、「創造的な」ソリューションのようです-もちろん、cronが適切にセットアップされていない場合、これは失敗します。よくない
- スクリプトの実行後に設定する core_config_data フラグ ('mynamespace/mymodule/initialized') を作成し、モジュールが接触する adminhtml のすべての領域 (CMS/Pages および独自のカスタム adminhtml コントローラー) をチェックします。これは、CMS/Pages がヒットするたびに余分なオーバーヘッドが発生するか、この core_config_data 設定をチェックしてコントローラーがヒットすることを除けば、良い解決策のように思えます。このソリューションの良い点は、API 呼び出しで何かが失敗した場合、このフラグを false に設定すると、再度実行され、適切なメッセージが表示され、成功するまで実行され続ける (または追加のロジックがある) ことです。 XX回試行した後、初期化コードを停止します)
これらのオプションのいずれかが「最良の」方法ですか?また、尊敬される拡張機能や Magento 自体など、これに対する先例はありますか?
お時間をいただきありがとうございます。