Skip to content

Commit 8e7123f

Browse files
author
Jan Petr
authored
Merge pull request #849 from algolia/info_in_configuration
Show queue information and add more docs links to configuration
2 parents 9563988 + 945efee commit 8e7123f

File tree

4 files changed

+234
-22
lines changed

4 files changed

+234
-22
lines changed
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
<?php
2+
3+
class Algolia_Algoliasearch_Adminhtml_QueueController extends Mage_Adminhtml_Controller_Action
4+
{
5+
public function indexAction()
6+
{
7+
/** @var Algolia_Algoliasearch_Helper_Config $config */
8+
$config = Mage::helper('algoliasearch/config');
9+
10+
/** @var Mage_Core_Model_Resource $resource */
11+
$resource = Mage::getSingleton('core/resource');
12+
$tableName = $resource->getTableName('algoliasearch/queue');
13+
14+
$readConnection = $resource->getConnection('core_read');
15+
16+
$size = (int) $readConnection->query('SELECT COUNT(*) as total_count FROM '.$tableName)->fetchColumn(0);
17+
$maxJobsPerSingleRun = $config->getNumberOfJobToRun();
18+
19+
$etaMinutes = ceil($size / $maxJobsPerSingleRun) * 5; // 5 - assuming the queue runner runs every 5 minutes
20+
21+
$eta = $etaMinutes . ' minutes';
22+
if ($etaMinutes > 60) {
23+
$hours = floor($etaMinutes / 60);
24+
$restMinutes = $etaMinutes % 60;
25+
26+
$eta = $hours . ' hours ' . $restMinutes . ' minutes';
27+
}
28+
29+
$queueInfo = array(
30+
'isEnabled' => $config->isQueueActive(),
31+
'currentSize' => $size,
32+
'eta' => $eta,
33+
);
34+
35+
$this->sendResponse($queueInfo);
36+
}
37+
38+
public function truncateAction()
39+
{
40+
/** @var Mage_Core_Model_Resource $resource */
41+
$resource = Mage::getSingleton('core/resource');
42+
$tableName = $resource->getTableName('algoliasearch/queue');
43+
44+
try {
45+
$writeConnection = $resource->getConnection('core_write');
46+
$writeConnection->query('TRUNCATE TABLE '.$tableName);
47+
48+
$status = array('status' => 'ok');
49+
} catch (\Exception $e) {
50+
$status = array('status' => 'ko', 'message' => $e->getMessage());
51+
}
52+
53+
$this->sendResponse($status);
54+
}
55+
56+
private function sendResponse($data)
57+
{
58+
$this->getResponse()->setHeader('Content-Type', 'application/json');
59+
$this->getResponse()->setBody(json_encode($data));
60+
}
61+
}

app/code/community/Algolia/Algoliasearch/etc/config.xml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,17 @@
6363
</modules>
6464
</translate>
6565
</adminhtml>
66+
<admin>
67+
<routers>
68+
<adminhtml>
69+
<args>
70+
<modules>
71+
<controller before="Mage_Adminhtml">Algolia_Algoliasearch_Adminhtml</controller>
72+
</modules>
73+
</args>
74+
</adminhtml>
75+
</routers>
76+
</admin>
6677
<global>
6778
<helpers>
6879
<algoliasearch>

0 commit comments

Comments
 (0)