1

我有一个相对较小的商店,大约 20k sku 所有简单的产品。我正在使用 magento 1.7.2,但所有旧版本都有同样的问题。我根本无法将我的产品导出到 CSV。直接从magento后端的数据流配置文件运行时内存不足,从shell运行时出现同样的错误。

Fatal error: Allowed memory size of 536870912 bytes exhausted (tried to allocate 71 bytes) in /home/public_html/app/code/core/Mage/Eav/Model/Entity/Attribute/Source/Table.php on line 62

我已将 magentos htaccess 中的内存限制和执行时间增加到 512m,将 magentos php.ini 增加到 512m,并将我的 VPS php 配置 ini 增加到 512mb。它仍然会在大约 4 分钟内烧毁并耗尽内存。

我很困惑,我的整个数据库(压缩)只有 28mb!为了使 magento 导出所有产品功能正常工作,我缺少什么?

4

4 回答 4

3

Magento 数据流确实倾向于使用大量内存,这使得大型商店的导出变得困难。对于拥有大量产品目录的商店,编写脚本直接从数据库导出而不是通过数据流导出通常要快得多、更容易。

于 2013-01-10T11:00:40.657 回答
0

我通过一次导出 500、1000 或任意数量(使用自定义导出脚本)解决了这个问题。

我制作了一个作为参数 $start 和 $productsToExport 接收的文件。该文件取了产品的集合,然后使用

LIMIT ($start-1)*$productsToExport, $productsToExport

此脚本仅返回导出的产品数量。

我制作了第二个主脚本,它对第一个文件执行递归 AJAX,参数 $start = 0,$productsToExport = 500。当 AJAX 完成后,它对 $start = 1 执行相同的操作,依此类推,直到没有产品。

这样做的好处是它不会使服务器过载(只有在前一个完成后才运行一个 ajax) - 如果发生错误,脚本会继续。memory_limit 和 max_execution_time 也是 sa

于 2013-01-10T11:55:42.693 回答
0

这可能是您的.htaccess文件没有覆盖memory_limit全局设置的问题php.ini

其他选项设置memory_limit为无限制在您index.php进行测试。然后你会知道 .htaccess 中的更改是否没有生效。

于 2013-01-10T11:07:52.457 回答
0

如果 20k skus 是指 20.000,那么这是完全可能的。不幸的是,导出非常需要内存。在这种情况下,我总是将 memory_limit 增加到 2000M,然后创建文件需要一段时间,但最终成功。

于 2013-01-10T12:27:14.407 回答