プラグイン > 開発について > プラグインアップデート時のキャッシュ操作 |
開発について
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
DELIGHT |
投稿日時: 2013/11/2 13:37
対応状況: −−−
|
仙人 登録日: 2010/2/3 居住地: 熊本県・九州・長野県・関東甲信越 投稿: 572 |
プラグインアップデート時のキャッシュ操作 お世話になっております。DELIGHTです。
プラグイン開発に関する皆様のお知恵をお借りしたく投稿します。 現在プラグインのアップデート処理を作成しています。 このプラグインには管理画面のメニューをtransformする処理が含まれています。 プラグインアップデートによってtransformの内容を変更しようと考えているのですが、下記の現象によって思うようにいきません。 目的: ・プラグインアップデートによって、管理画面メニューのtransform内容を旧版のそれから変更する。 前提: ・EC-CUBEバージョンは2.12.6 ・旧版プラグインは有効化されている。 ・SMARTY_FORCE_COMPILE_MODEはfalse (EC-CUBEデフォルト値) 現象: ・update処理内でテンプレートキャッシュクリア(SC_Utils_Ex::clearCompliedTemplate();)を行わない場合、以前の旧メニューのまま表示されてしまう。 ・update処理内でキャッシュをクリアしてもそのアクセスで表示されるのは旧メニューであり、その内容でキャッシュが作成されるため、結局以前の旧メニューのまま表示されてしまう。 ・plugin_update::update()内からページクラスのインスタンスにアクセスできないため、SC_View::$_smarty->force_compileをfalseにできない。 ・もちろん定数の再定義はできないため、それによる解決は不可能。 パラメータ設定にてSMARTY_FORCE_COMPILE_MODEをtrueに設定すれば全て解決するのですが、 全ての利用者にそれを実施していただける保証はないので、 なんとかプラグインの範囲内での解決を模索しています。 よい知恵がありましたらご教授いただけると幸甚です。
|
snitta |
投稿日時: 2013/11/4 23:42
対応状況: −−−
|
一人前 登録日: 2013/10/3 居住地: 島根県 投稿: 100 |
Re: プラグインアップデート時のキャッシュ操作 興味がありましたので少し調べてみました。
誤っていましたらご指摘をお願いいたします。 まず原因ですが、旧版のプラグインが読み込まれている状態で 'ownersstore/plugin.tpl' に関連するテンプレートがコンパイルされる点にあるのではないかと思います。 1. SC_Helper_Plugin::load() ←───────── これと、 2. LC_Page_Admin_OwnersStore::updatePlugin() ← これと、 3. SC_Utils::clearCompliedTemplate() 4. LC_Page_Admin::sendResponse() ←────── これが同じリクエスト内で処理される事が原因 プラグイン側の対策として出来る事は アップデート時にフラグを立て、次回リクエスト時にテンプレートキャッシュのクリアを再実行する、 ぐらいでしょうか…? # アップデート時にプラグインを無効にしてもらうようにエラーを返す手がありますが、 # 2.13.0 ではエラーを返してもチェックされずにプラグイン情報の更新が行われてしまいます。 # この辺りの挙動は最初から明文化されていないので何とも言えません。
この件については自分も皆様のご意見をお伺いしたいです。 よろしくお願いいたします。
|
DELIGHT |
投稿日時: 2013/11/5 11:08
対応状況: −−−
|
仙人 登録日: 2010/2/3 居住地: 熊本県・九州・長野県・関東甲信越 投稿: 572 |
Re: プラグインアップデート時のキャッシュ操作 その後社内でも相談してみましたが
とすることで、次回有効化の際にキャッシュのクリアが行われます。 ただ利用者の意図しない無効化処理が行われるので、 snitta様の方法とどちらを選ぶかは好みになりますね・・。
|
snitta |
投稿日時: 2013/11/6 11:22
対応状況: −−−
|
一人前 登録日: 2013/10/3 居住地: 島根県 投稿: 100 |
Re: プラグインアップデート時のキャッシュ操作 DELIGHT 様
ご返事ありがとうございます。 自身で無効にしてしまう発想はありませんでした、目からうろこです! どちらにしても、本体側でもなにかしらの対応が成されると良いですね。
|
DELIGHT |
投稿日時: 2013/11/7 16:41
対応状況: −−−
|
仙人 登録日: 2010/2/3 居住地: 熊本県・九州・長野県・関東甲信越 投稿: 572 |
Re: プラグインアップデート時のキャッシュ操作 さる筋からいただいたヒントを元に、解決策を書いてみました。
plugin_update.php
include.php
SomePlugin.php
裏ワザ的なリロードになってしまいますが、 利用者から見たプラグインアップデートのフローを オリジナルに近い形で再現できているかと存じます。
|
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |