Skip to content

Commit 176ee2c

Browse files
improve: add pagination to clean collection
1 parent 1fe8dbb commit 176ee2c

File tree

3 files changed

+19
-8
lines changed

3 files changed

+19
-8
lines changed

Model/Clean.php

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -66,16 +66,24 @@ public function execute()
6666
$this->logger->info(__('Start webapi logs clean'));
6767
$hours = $this->config->getCleanOlderThanHours();
6868
$datetime = new DateTime('-' . $hours . ' hour');
69+
$page = 1;
6970

7071
$collection = $this->logCollectionFactory->create();
71-
$rows = $collection->addFieldToFilter(LogResourceModel::CREATED_AT, ['lt' => $datetime])
72-
->getItems();
72+
$collection = $collection->addFieldToSelect(LogResourceModel::LOG_ID)
73+
->addFieldToFilter(LogResourceModel::CREATED_AT, ['lt' => $datetime])
74+
->setPageSize(2);
7375

74-
$tot = $collection->count();
75-
76-
/** @var LogResourceModel $row */
77-
foreach ($rows as $row) {
78-
$this->logResourceModel->delete($row);
76+
$pageCount = $collection->getLastPageNumber();
77+
$currentPage = 1;
78+
$tot = 0;
79+
while ($currentPage <= $pageCount) {
80+
$collection->setCurPage($currentPage);
81+
foreach ($collection as $row) {
82+
$this->logResourceModel->delete($row);
83+
$tot++;
84+
}
85+
$collection->clear();
86+
$currentPage++;
7987
}
8088

8189
$this->logger->info(__('End webapi logs clean. Deleted %1 elements.', $tot));

Model/ResourceModel/LogResourceModel.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,9 @@ class LogResourceModel extends AbstractDb
1515
/** @var string */
1616
const CREATED_AT = 'created_at';
1717

18+
/** @var string */
19+
const LOG_ID = 'log_id';
20+
1821
protected function _construct()
1922
{
2023
$this->_init('webapi_logs', 'log_id');

etc/crontab.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<?xml version="1.0"?>
22
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
33
xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Cron:etc/crontab.xsd">
4-
<group id="general">
4+
<group id="default">
55
<job name="webapilogs_clean" instance="GhostUnicorns\WebapiLogs\Cron\CleanCron" method="execute">
66
<schedule>0 * * * *</schedule>
77
</job>

0 commit comments

Comments
 (0)