Magento 在第一次安装模块时,是否有适当/最佳的方法来执行一些与数据库无关的PHP?

Magento 在第一次安装模块时,是否有适当/最佳的方法来执行一些与数据库无关的PHP?,magento,module,installation,adminhtml,Magento,Module,Installation,Adminhtml,我正在创建一个模块,安装该模块时需要做一些事情(仅一次)。可能需要做很多事情,但我需要做的最基本的事情是对服务器进行API调用,让外部服务器知道模块已安装,并获取一些更新的配置项 我读过这篇文章,但在我的情况下,我真正感兴趣的是执行与数据库、装置、更新表等无关的代码。另外,我要明确的是,这个模块对前端没有影响(效果?)。仅供参考,我也读过Alan Storm的文章,但这实际上只是让我意识到安装/升级脚本不是用于执行随机PHP的 在我看来,我有几种可能的方法来实现这一点: 我所做的恐怕不是最佳实

我正在创建一个模块,安装该模块时需要做一些事情(仅一次)。可能需要做很多事情,但我需要做的最基本的事情是对服务器进行API调用,让外部服务器知道模块已安装,并获取一些更新的配置项

我读过这篇文章,但在我的情况下,我真正感兴趣的是执行与数据库、装置、更新表等无关的代码。另外,我要明确的是,这个模块对前端没有影响(效果?)。仅供参考,我也读过Alan Storm的文章,但这实际上只是让我意识到安装/升级脚本不是用于执行随机PHP的

在我看来,我有几种可能的方法来实现这一点:

  • 我所做的恐怕不是最佳实践,在安装/安装脚本中添加一些PHP来执行此PHP
  • 我创建了某种cronjob,它只执行我需要的任务一次(不确定这将如何工作,但它似乎可能是一个“创造性”的解决方案-当然,如果cron设置不正确,那么这将失败,这是不好的
  • 我创建了一个核心配置数据标志('mynamespace/mymodule/initialized'),在脚本运行后设置该标志,并检查模块涉及的adminhtml的每个区域(CMS/Pages和我自己的自定义adminhtml控制器)。这似乎是一个很好的解决方案,除了每次点击CMS/页面或我的控制器时都会产生额外的开销外,请检查此core_config_数据设置。此解决方案的好处是,如果API调用失败,我可以将此标志设置为false,它将再次运行,显示相应的消息,然后继续继续运行,直到成功为止(或具有附加逻辑,可在XX次尝试后停止初始化代码)
这些选项中有哪一个是“最好”的方式吗?在某些地方是否有类似的先例,例如受人尊敬的扩展或来自Magento本身


提前感谢您抽出时间!

您提出了一个有趣的问题

目前,我还不知道有什么方法可以在模块安装上执行任意的PHP,显而易见的方法(正确/错误)是根据您的问题1使用安装程序设置/升级脚本

2和3看起来更像是一种资源密集型方法,即不必要地检查每个页面加载(缓存或不缓存)

还有一种方法是使用
/pear
安装模块(假设您使用Magento打包)。我快速浏览了
/downloader/pearlib/php/pearmage.php
,但没有看到任何执行行(相对于复制文件)。我本以为这是安装时执行某些操作的最佳位置(上述1项除外)


但是,我从来没有研究过这个问题,所以我对其他可能的答案相当感兴趣。

感谢您花时间回复@sonassi-非常感谢!我真的从来没有想过查看与pear相关的magento connect文件来寻找解决方案,老实说,我不太了解magento connect在网络中的实际工作方式背景(我从来没有太多的理由这么做,我一直认为这是一个直接的过程),但这给了我一些其他的东西来看看。如果你对此有任何其他的想法/想法,我当然很乐意听到他们!