我正在创建一个模块,该模块需要在安装模块时完成(仅一次)。可能需要做很多事情,但我需要做的最基本的事情是对服务器进行 API 调用,让外部服务器知道模块已安装,并获取一些更新的配置项目。
我在stackoverflow上阅读了这个问题,但是在我的情况下,我真的对执行与数据库、固定装置、更新表等无关的代码感兴趣。另外,为了清楚这个模块没有影响(效果?)前端。仅供参考,我还阅读了 Alan Storm 的这篇精彩文章,但这确实让我明白了安装/升级脚本不适用于执行随机 PHP。
在我看来,我有几种可能的方法来实现这一点:
- 我做了我担心不是最佳实践的事情,并在我的设置/安装脚本中添加了一些 PHP 来执行这个 php
- 我创建了某种 cronjob,它只执行一次我需要的任务(不确定这将如何工作,但它似乎可能是一个“创造性”的解决方案——当然,如果 cron 设置不正确,那么这将失败,这不好
- 我创建了一个 core_config_data 标志('mynamespace/mymodule/initialized'),在我的脚本运行后设置它,并检查我的模块触及的 adminhtml 的每个区域(CMS/Pages 和我自己的自定义 adminhtml 控制器)。这似乎是一个很好的解决方案,除了每次点击 CMS/Pages 或点击我的控制器时所有额外的开销,检查这个 core_config_data 设置。这个解决方案的好处是,如果我的 API 调用失败了,我可以将此标志设置为 false,它将再次运行,显示适当的消息,并继续运行直到它成功(或有额外的逻辑XX 次尝试后将停止初始化代码)
这些选项中的任何一个都是“最佳”方式吗?在某个地方是否有任何先例,例如受人尊敬的扩展或 Magento 本身?
在此先感谢您的时间!