2

モジュールのインストール時に (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 自体など、これに対する先例はありますか?

お時間をいただきありがとうございます。

4

1 に答える 1

1

あなたは興味深い質問をします。

現時点では、モジュールのインストール時に任意の PHP を実行する手段を認識していません。明白な方法 (正しい/間違っている) は、Q.

2 と 3 は、よりリソース集約的なアプローチのように見えます。すべてのページの読み込み (キャッシュかどうか) を不必要にチェックします。

を使用してモジュールをインストールする方法もあり./pearます (Magento を使用してパッケージ化したと仮定します)。私は非常に簡単に調べまし./downloader/pearlib/php/pearmage.phpたが、(ファイルのコピーに対して)実行される行は見当たりませんでした。これは、インストール時に何かを実行するのに最適な場所だと思いました (上記の 1 以外)。

しかし、私はこれを調べたことがないので、他の可能な答えにかなり興味があります.

于 2012-03-13T23:38:06.570 に答える