Strona główna forum Wsparcie Problemy z działaniem Moduł dataflow, problem z eksportem XML dla 500 produktów

Moduł dataflow, problem z eksportem XML dla 500 produktów

Wszystkie problemy związane z działaniem sklepu...


Posty: 1
Gadu-Gadu: 0

Witam,
od kilku dni nie mogę sobie poradzić z problemem, który pojawia się przy eksporcie w formacie Excel XML. Mam do wyeksportowania 500 produktów, jednak skrypt eksportu wywala mi taki błąd:

ABORT: PHP cpu time limit exceeded in Zend_Db_Select::_join() called at [/lib/Zend/Db/Select.php:744], in Zend_Db_Select::_join() called at [/lib/Zend/Db/Select.php:230], in Zend_Db_Select::from() called at [/app/code/core/Mage/Core/Model/Mysql4/Abstract.php:375], in Mage_Core_Model_Mysql4_Abstract::_getLoadSelect() called at [/app/code/core/Mage/Core/Model/Mysql4/Abstract.php:351], in Mage_Core_Model_Mysql4_Abstract::load() called at [/app/code/core/Mage/Core/Model/Abstract.php:225], in Mage_Core_Model_Abstract::load() called at [/app/code/core/Mage/Dataflow/Model/Convert/Mapper/Column.php:135], in Mage_Dataflow_Model_Convert_Mapper_Column::map() called at [/app/code/core/Mage/Dataflow/Model/Convert/Action/Abstract.php:242], in Mage_Dataflow_Model_Convert_Action_Abstract::run() called at [/app/code/core/Mage/Dataflow/Model/Convert/Profile/Abstract.php:139], ..., in Mage_Core_Model_App::run() called at [/app/Mage.php:596], in Mage::run() called at [/index.php:80]


Zlokalizowałem miejse, w którym przerywany jest skrypt i następuje to w pętli foreach ($entityIds as $i => $entityId) w metodzie unparse() w pliku /app/code/core/Mage/Catalog/Model/Convert/Parser/Product.php

Jak zatrzymam pętlę foreach po 400 powtórzeniach, wówczas jest wszystko OK. Czasem wywala mi na 498 a czasem na 470 powtórzeniu pętli.
Jak mogę obejść ten problem? Myślałem że to chodzi o ustawienie w php.ini max_execution_time, lecz ustawiłem na 18000 i nic to nie zmieniło.
Kolega mi podpowiedział, żebym to podzielił na pobieranie po kawałku po 100 produktów, ale nie wiem jak zmienić ten kod, aby pętla działała automatycznie tyle razy ile powinna.

Hosting jest na home.pl. Od konsultanta dowiedziałem się że jedyne co mogę zrobić to wykupić wersję pakietu Serwer, gdzie czas wykonywania skryptu to 60 sekund, zamiast 30. Jednak nie wiem co się będzie działo, jeśli i to 60 sekund nie wystarczy, gdy moja klientka doda kolejnych 500 produktów na przykład.
Czy można tą funkcję jakoś zoptymalizować, aby zawsze brała tylko np. po 100 produktów i wtedy np. funkcja unparse wywoływana byłaby X/100 razy? Albo np. podzielić na partie i wysyłać do przeglądarki za każdym razem informację: wyeksportowano 100/X produktów, wyeksportowano 200/X produktów itp. Myślę że rozwiązałoby to problem związany z czasem wykonywania skryptu, ale nie wiem jak to zrobić :oops:

Moduł dataflow, problem z eksportem XML dla 500 produktów

PostTeraz jest 24 kwi 2024, o 09:13
Google

Posty: 427
Lokalizacja: Internet

Powrót do Problemy z działaniem



cron