Skip to content

Commit 8ae5292

Browse files
authored
Fix clean performance leak
1 parent 613703b commit 8ae5292

File tree

1 file changed

+13
-50
lines changed

1 file changed

+13
-50
lines changed

Model/Clean.php

Lines changed: 13 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,6 @@
1010

1111
use DateTime;
1212
use Exception;
13-
use GhostUnicorns\WebapiLogs\Model\Log\Logger;
14-
use GhostUnicorns\WebapiLogs\Model\ResourceModel\Entity\LogCollectionFactory;
1513
use GhostUnicorns\WebapiLogs\Model\ResourceModel\LogResourceModel;
1614

1715
class Clean
@@ -21,71 +19,36 @@ class Clean
2119
*/
2220
private $config;
2321

24-
/**
25-
* @var Logger
26-
*/
27-
private $logger;
28-
29-
/**
30-
* @var LogCollectionFactory
31-
*/
32-
private $logCollectionFactory;
33-
3422
/**
3523
* @var ResourceModel\LogResourceModel
3624
*/
3725
private $logResourceModel;
3826

39-
/**
40-
* @param Config $config
41-
* @param Logger $logger
42-
* @param LogCollectionFactory $logCollectionFactory
43-
* @param LogResourceModel $logResourceModel
44-
*/
4527
public function __construct(
4628
Config $config,
47-
Logger $logger,
48-
LogCollectionFactory $logCollectionFactory,
4929
LogResourceModel $logResourceModel
5030
) {
5131
$this->config = $config;
52-
$this->logger = $logger;
53-
$this->logCollectionFactory = $logCollectionFactory;
5432
$this->logResourceModel = $logResourceModel;
5533
}
5634

35+
public function cleanAll()
36+
{
37+
$this->logResourceModel->getConnection()->truncateTable($this->logResourceModel->getMainTable());
38+
}
39+
5740
/**
5841
* @throws Exception
5942
*/
6043
public function execute()
6144
{
62-
if (!$this->config->isEnabled()) {
63-
return;
64-
}
65-
66-
$this->logger->info(__('Start webapi logs clean'));
67-
$hours = $this->config->getCleanOlderThanHours();
68-
$datetime = new DateTime('-' . $hours . ' hour');
69-
$page = 1;
70-
71-
$collection = $this->logCollectionFactory->create();
72-
$collection = $collection->addFieldToSelect(LogResourceModel::LOG_ID)
73-
->addFieldToFilter(LogResourceModel::CREATED_AT, ['lt' => $datetime])
74-
->setPageSize(2);
75-
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++;
87-
}
88-
89-
$this->logger->info(__('End webapi logs clean. Deleted %1 elements.', $tot));
45+
$this->logResourceModel->getConnection()->delete(
46+
$this->logResourceModel->getMainTable(),
47+
sprintf(
48+
'%s < NOW() - INTERVAL %s HOUR',
49+
LogResourceModel::CREATED_AT,
50+
(int)$this->config->getCleanOlderThanHours()
51+
)
52+
);
9053
}
9154
}

0 commit comments

Comments
 (0)