1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
clearsearchcontentagent.php
См. документацию.
1<?php
2
4
7
9{
10 protected const CLEAR_LOG_SELECT_LIMIT = 50000;
11 protected const CLEAR_LOG_DELETE_LIMIT = 1000;
12
13 public static function getName()
14 {
15 return static::class . '::execute();';
16 }
17
18 public static function execute()
19 {
20 $days = 180;
22 {
23 $days = (int)Main\Config\Option::get('bizproc', 'search_cleanup_days', 180);
24 }
25
26 static::clear($days);
27
28 return static::getName();
29 }
30
31 private static function clear(int $days): void
32 {
33 $connection = Application::getConnection();
34 $helper = $connection->getSqlHelper();
35 $limit = static::CLEAR_LOG_SELECT_LIMIT;
36 $partLimit = static::CLEAR_LOG_DELETE_LIMIT;
37 $sqlIntervalLt = $helper->addDaysToDateTime(-1 * $days);
38 $sqlIntervalGt = $helper->addDaysToDateTime(-1 * ($days + 1));
39
40 $strSql = "SELECT st.TASK_ID FROM b_bp_task_search_content st "
41 . "INNER JOIN b_bp_task t ON (st.TASK_ID = t.ID) "
42 . "WHERE t.MODIFIED < {$sqlIntervalLt} "
43 . "AND t.MODIFIED > {$sqlIntervalGt} LIMIT {$limit}";
44 $ids = $connection->query($strSql)->fetchAll();
45
46 if (!$ids)
47 {
48 return;
49 }
50
51 while ($partIds = array_splice($ids, 0, $partLimit))
52 {
53 $inSql = implode(",", array_column($partIds, 'TASK_ID'));
54 $connection->query(
55 sprintf(
56 'DELETE from b_bp_task_search_content WHERE TASK_ID IN(%s)',
57 $inSql,
58 )
59 );
60 }
61 }
62}
$connection
Определения actionsdefinitions.php:38
static isModuleInstalled($moduleName)
Определения modulemanager.php:125