2012-03-07 20 views
2

我正在創建一個模塊,在模塊安裝時需要完成一些工作(僅限一次)。可能有很多事情需要完成,但我需要做的最基本的事情是對服務器進行API調用,讓外部服務器知道模塊已安裝,並獲得一些更新的配置項目。首次安裝模塊時,執行一些與數據庫無關的PHP的適當/最佳實踐方法?

我看過這個this question on stackoverflow但是在我的情況下,我真的很想執行與數據庫,燈具,更新表等無關的代碼。另外,爲了清楚這個模塊沒有影響(效果?)在前端。僅供參考,我也閱讀了Alan Storm的this spectacular article,但這真的只能讓我想起安裝/升級腳本不適用於執行隨機PHP。

在我的腦海裏,我有幾種可能的方式來實現:

  • 我做什麼,我擔心的是不是最好的做法,並添加一些PHP到我的設置/安裝腳本來執行這個PHP
  • 我創建了一些cronjob,它將執行我只需要一次的任務(不知道這將如何工作,但它似乎可能是一個「創造性」的解決方案 - 當然,如果cron沒有正確設置,那麼這將失敗,這不好
  • 我創建了一個core_config_data標誌('mynamespace/mymodule/initialized'),一旦我的腳本運行就設置好了,我檢查我的模塊觸及的adminhtml的每個區域(CMS/Pages和我自己的自定義adminhtml控制器)。這似乎是一個很好的解決方案,除了每次點擊CMS/Pages或控制器命中時檢查此core_config_data設置的額外開銷。關於這個解決方案的好事是,如果某些事情因我的API調用而失敗,我可以將此標誌設置爲false,並且它會再次運行,顯示相應的消息,並繼續運行,直到成功爲止(或者有額外的邏輯將停止嘗試後的XX號)

是否有任何這些選項的「最佳」的方式,以及是否有任何形式的先例這個地方,初始化代碼,如受人尊敬的延伸或Magento的自己?

在此先感謝您的時間!

回答

1

您提出了一個有趣的問題。

目前,我還沒有意識到在模塊安裝上執行任何PHP的方法,顯而易見的方法(正確/錯誤地)是使用安裝程序安裝/升級腳本按照Q

2和3似乎是一種更資源密集的方法,即。不必要地檢查每個頁面加載(緩存與否)。

也有使用./pear來安裝你的模塊的方法(假設你使用Magento打包它)。我通過./downloader/pearlib/php/pearmage.php快速瀏覽過,但沒有看到任何執行的行(vs複製文件)。我會想象這是執行安裝的最佳位置(除了上面提到的1之外)。

但是,我從來沒有看過這個,所以我對其他可能的答案很感興趣。

+0

感謝您花時間回覆@sonassi - 非常感謝!我誠實地從來沒有想過看梨相關的magento連接文件尋找解決方案,說實話,我不知道如何Magento連接實際上在後臺工作(我從來沒有太多的理由和我已經總是認爲這是一個簡單的過程),但是這給了我一些其他的東西來看待。如果您對此有任何其他想法/想法,我一定會喜歡聽到他們! – 2012-03-14 00:23:12