3

您好,我正在使用 Advance 导入配置文件以编程方式在磁电机中导入产品,并且我想在整个导入完成后运行重新索引。我已经尝试挖掘magento,但是在导入完成后找不到任何正在调用的函数......

我找到了一个文件 process.phtml,它为每个 csv 行 /app/design/adminhtml/default/default/template/system/convert/profile 调用 ajax

所以我在根目录创建了一个文件并通过ajax调用它来导入每一行,但是它在Mysql中创建了一个死锁并且导入抛出错误SQLSTATE [40001]:序列化失败:1213尝试锁定时发现死锁;尝试重新启动事务。

function reIndexData(){
                        var url = '<?php echo str_replace("index.php/","",Mage::getBaseUrl()); ?>';
                         new Ajax.Request(url+'reindex.php', {
                          method: "post",
                          parameters: 'data',
                          onSuccess: function(transport) {}
                        });
                    }
4

3 回答 3

2

有一个观察者叫

catalog_product_import_finish_before

这应该允许您在每次导入产品时重新索引数据库

以下是有关 Magento 观察者的一些信息:

什么是 Magento 观察者?

观察者允许您查看(观察)程序中何时发生特定操作(例如,查看何时导入项目)。

一旦我们看到某个动作(例如正在导入的产品),Observer 允许我们注入和运行代码

如何设置观察者?

看到这个问题:在 Magento 中设置观察者的正确方法是什么?

于 2012-12-24T17:35:16.357 回答
2

您还可以在 Magento 的任何地方分派您的自定义事件,并调用您的方法来进行 reIndex 过程。

有关更多详细信息,请参阅这些第一第二

于 2012-12-24T17:46:47.423 回答
0

走这条路.. app/code/core/Mage/Adminhtml/controllers/System/Convert

您会发现文件 ProfileController.php 有一个名为 batchFinishAction() 的函数,当导入配置文件完成时会调用该函数

呼……明白了!!谢谢大家的帮助。。

于 2012-12-26T12:38:37.657 回答