Skip to content

Commit 1031b3b

Browse files
committed
Clean expired quotes - Fix out of memory on huge quotes list
1 parent 047f5b9 commit 1031b3b

File tree

1 file changed

+16
-5
lines changed

1 file changed

+16
-5
lines changed

app/code/Magento/Sales/Cron/CleanExpiredQuotes.php

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,12 @@
55
*/
66
namespace Magento\Sales\Cron;
77

8-
use Magento\Quote\Model\ResourceModel\Quote\Collection;
8+
use Magento\Quote\Model\ResourceModel\Quote\Collection as QuoteCollection;
99
use Magento\Sales\Model\ResourceModel\Collection\ExpiredQuotesCollection;
1010
use Magento\Store\Model\StoreManagerInterface;
1111

1212
/**
13-
* Class CleanExpiredQuotes
13+
* Cron job for cleaning expired Quotes
1414
*/
1515
class CleanExpiredQuotes
1616
{
@@ -45,9 +45,20 @@ public function execute()
4545
{
4646
$stores = $this->storeManager->getStores(true);
4747
foreach ($stores as $store) {
48-
/** @var $quotes Collection */
49-
$quotes = $this->expiredQuotesCollection->getExpiredQuotes($store);
50-
$quotes->walk('delete');
48+
/** @var $quoteCollection QuoteCollection */
49+
$quoteCollection = $this->expiredQuotesCollection->getExpiredQuotes($store);
50+
$quoteCollection->setPageSize(50);
51+
52+
// Last page returns 1 even when we don't have any results
53+
$lastPage = $quoteCollection->getSize() ? $quoteCollection->getLastPageNumber() : 0;
54+
55+
for ($currentPage = 1; $currentPage <= $lastPage; $currentPage++) {
56+
$quoteCollection->setCurPage($currentPage);
57+
58+
$quoteCollection->walk('delete');
59+
60+
$quoteCollection->clear();
61+
}
5162
}
5263
}
5364
}

0 commit comments

Comments
 (0)