通过ORM将数据导入Magento是否具有可接受的性能,或者直接SQL是唯一的选择吗?

时间:2014-05-05 18:58:32

标签: php mysql magento orm magento-1.7

首先,我对Magento的经历非常小,而且我的知识水平几乎不比表面更深。我一直在读书,但我对我所知道的事情感到非常不舒服。

  • 我尝试过MAGMI - 开箱即用只进口产品,但我需要报价,订单,地址,客户和不同的价目表

  • 我曾尝试为MAGMI创建一个扩展程序 - 但我对此不太满意,也不了解数据库结构以便为其编写查询。

  • 我编写了一个试图使用SOAP接口导入客户信息的模块,但它绝对而且非常慢。 (约5分钟连接并导入具有完整信息的单个客户)

我需要编写一个从自定义XML文件中导入几个东西的模块。

我无法控制除了XML文件本身之外的数据 - 我更愿意按原样导入,而不是将其转换为多个CSV。

为了避免写入数据库,我尝试编写一个使用SOAP接口导入客户信息的过程但是速度很慢 - 我说的只是连接到界面25-30秒,然后另一个实际导入一个客户30秒左右,没有他们的地址或任何其他信息。

我要么做错了 - 或者我没有按预期使用该系统,但无论如何,我将扩展我的模块以使用Magento的ORM导入产品,或者直接写入数据库

我对实体 - 属性 - 值模型数据库知之甚少,而且我知道编写直接SQL查询取决于特定的Magento安装,所以我更喜欢使用这些模型。

此导入过程将是每60分钟运行一次的cron作业。

我知道这取决于我的代码结果如何,但如果我每次运行最多导入100个产品,订单和客户,那么使用Magento的ORM会非常耗费资源并且速度慢吗?

1 个答案:

答案 0 :(得分:1)

Magento总是有性能/复杂性/保真度的权衡,克服它的唯一方法就是拉起袖子,承受一些糟糕的进口,并学习最适合你情况的东西。

您可能感兴趣的两件事。首先,确保您的WSDL cache已开启。许多V2 SOAP API性能问题都可以追溯到PHP而不是缓存WSDL文件。

其次,考虑编写使用本机PHP API对象的本机PHP脚本。我不是指像Mage_Catlog_Model_Product这样的模型,而是像

这样的API对象
$model = Mage::getModel('customer/customer_api');
var_dump(get_class($model);

这些对象是RPC / SOAP API代码的业务逻辑所在的位置,如果可以直接调用它们,则可以避免许多与WS API开销相关的性能问题。