我看到了这方面的一些姿态,并调查了“基地”组织本身同样的部署情景。 我必须同意,作为企业级Magento,这种功能应当建立起来。 至少是在SO/strong>格式或时装的好消息,如何填写,我真的不清楚。 此处是例外退缩的样本:
try {
$write = Mage::getSingleton( core/resource )->getConnection( core_write );
$write->beginTransaction();
// do stuff here
$write->commit();
} catch (Exception $e) {
mage::log(__METHOD__ . : . __LINE__ . : Rollback happened. );
$write->rollback();
}
现在,如果你看一看一面/密码/核心/Mage/Core/Model/Resource/Setup.php,你就会发现相当一部分有趣的方法。 特别是:_getModificationSqlFiles/code>,_rollbackResourceDb
and _modificationResourceDb
。
<代码>_modificationResourceDb是我最感兴趣的,因为美元交易 这里的类型也可以是滚动的,也是不停的——也指出,你也可以将购买力平价文件用于你的设置档案。
// Read resource files
$arrAvailableFiles = array();
$sqlDir = dir($sqlFilesDir);
while (false !== ($sqlFile = $sqlDir->read())) {
$matches = array();
if (preg_match( #^ .$resModel. - .$actionType. -(.*).(sql|php)$#i , $sqlFile, $matches)) {
$arrAvailableFiles[$matches[1]] = $sqlFile;
}
}
该法典实施后:
$arrModifyFiles = $this->_getModifySqlFiles($actionType, $fromVersion, $toVersion, $arrAvailableFiles);
但是,在这里,我担任核心的Magento devs在ESV资源模式的头盔中丧生,只是部分完成。
protected function _getModifySqlFiles($actionType, $fromVersion, $toVersion, $arrFiles)
{
$arrRes = array();
switch ($actionType) {
case install :
case data-install :
...
case rollback :
break;
case uninstall :
break;
}
return $arrRes;
}
我没有机会对上述情况进行真正的测试,而只是从我对马亨托和自动卸载的人力资源管理处的初步调查以及另一个开发商对其调查结果的投入。
归根结底,如果我们能够把我们的所有变化至少放在一个版本的控制系统中的模块里,那将是理想的。 显然,需要进口的大量数据集以这种方式管理,但对于这些小规模的增量变化,我想要推动进行中转、生产测试,如果它不能收回一个版本,而且所有东西都恢复正常。
显然,没有一种理想的部署解决办法,因为如此多的客户有着不同的要求和需求,但这样做的总体方式有助于部署守则/后勤物资。 具有讽刺意味的是,企业部已经建立了客户关系管理系统,并具备了制定法典的模块化能力,但非行并不像爱一样。
一个相关的问题是,我们目前如何用一些“带家”的专门文字来做,这些文字基本上就是:
然后用MySQLDump或背书,在BSE_URLs公司档案中取而代之。
马亨托部署的最佳做法
Another tool to look at would be Phing.
If anyone has time to investigate the "rollback" and "uninstall" processes that seem to be implemented and report their findings would be helpful to me as well.