1

私は比較的小さな店舗を持っており、約 20,000 の SKU がすべて単純な製品です。私は magento 1.7.2 を使用していますが、すべての古いバージョンで同じ問題がありました。製品を CSV にエクスポートできません。Magento バックエンドのデータフロー プロファイルから直接実行するとメモリ不足になり、シェルから実行すると同じエラーが発生します。

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 分で焼き尽くされ、メモリが不足します。

私はとても混乱しています。データベース全体 (zip 形式) は 28 MB しかありません! Magento のすべての製品のエクスポート機能を機能させるには何が欠けていますか?

4

4 に答える 4

3

Magento データフローは大量のメモリを使用する傾向があり、大規模なストアでのエクスポートが困難になります。大規模な製品カタログを持つ店舗では、多くの場合、スクリプトを記述して、データフローではなくデータベースから直接エクスポートする方がはるかに迅速かつ簡単です。

于 2013-01-10T11:00:40.657 に答える
0

20k skusで20.000を意味する場合、これは完全に可能です。残念ながら、エクスポートはメモリに非常に飢えています。この場合、私は常にmemory_limitを2000Mに増やし、ファイルの作成に時間がかかりますが、最終的には成功します。

于 2013-01-10T12:27:14.407 に答える
0

この問題は、(カスタム エクスポート スクリプトを使用して) 一度に 500、1000、または必要な数だけエクスポートすることで解決しました。

パラメータとして $start と $productsToExport を受け取るファイルを作成しました。ファイルは製品のコレクションを取得してから使用しました

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

このスクリプトは、エクスポートされた製品の数のみを返しました。

$start = 0、$productsToExport = 500 というパラメーターを使用して、最初のファイルに対して再帰的な AJAX を実行する 2 番目のマスター スクリプトを作成しました。製品がなくなるまで。

これの利点は、サーバーが過負荷にならないことです (1 つの ajax は、前の ajax が終了した後にのみ実行されます)。エラーが発生した場合、スクリプトは続行されます。また、memory_limit と max_execution_time は sa

于 2013-01-10T11:55:42.693 に答える
0

これは、ファイルがでグローバルに設定された設定.htaccessをオーバーライドしていないことに問題がある可能性があります。memory_limitphp.ini

他のオプションは、テスト用memory_limitに無制限に設定されてindex.phpいます。次に、.htaccess の変更が反映されていないかどうかがわかります。

于 2013-01-10T11:07:52.457 に答える