Добавлен функционал очистки устаревших AccountSessions

This commit is contained in:
ErickSkrauch
2017-09-29 02:04:16 +03:00
parent ec0b25e88d
commit 22ed0942e8
5 changed files with 67 additions and 8 deletions

View File

@@ -1,6 +1,7 @@
<?php
namespace console\controllers;
use common\models\AccountSession;
use common\models\EmailActivation;
use common\models\MinecraftAccessKey;
use yii\console\Controller;
@@ -40,6 +41,28 @@ class CleanupController extends Controller {
return self::EXIT_CODE_NORMAL;
}
/**
* Нужно удалить те сессии, которые не рефрешились 90 дней,
* а также сессии, которые ни разу не рефрешились с момента своей выписки
* более чем 2 недели назад.
*
* У модели AccountSession нет внешних связей, так что целевые записи
* могут быть удалены без использования циклов.
*/
public function actionWebSessions() {
AccountSession::deleteAll([
'OR',
['<', 'last_refreshed_at', time() - 7776000], // 90 days
[
'AND',
'created_at = last_refreshed_at',
['<', 'created_at', time() - 1209600], // 2 weeks
],
]);
return self::EXIT_CODE_NORMAL;
}
private function getEmailActivationsDurationsMap(): array {
$durationsMap = [];
foreach (EmailActivation::getClassMap() as $typeId => $className) {