Автообновление индекса mSeach2 через cron

Есть интернет магазин с импортом из файла.
Импорт производится кроном раз в сутки.
Каждый раз после импорта нужно чистить кеш сайта и обновлять индекс в mSearch2.

Для чистки кеша нашел вот такой скрипт и засунул в cron:
<?php
function clearCache() {
require_once('/index.php');
$modx= new modX();
$modx->initialize('web');
$modx->getService('error','error.modError', '', '');
$cm = $modx->getCacheManager();
$cm->refresh();
}
?>
Вопрос в следующем: нет ли похожего скрипта для обновления индекса mSearch2, что бы тоже засунуть его в cron?
Валерий Савинов
20 июля 2015, 07:11
modx.pro
1
1 316
0

Комментарии: 4

Валерий Савинов
14 августа 2015, 17:37
0
Если кому интересно то вот, рабочий код на обновление кеша, работающий по принципу обновления кеша через админку.
Решение не мое — помог гугл.

define("MODX_CORE_PATH", "./core/");
define("MODX_CONFIG_KEY", "config");
 
include(MODX_CORE_PATH . "model/modx/modx.class.php");
 
$modx = new modX();
 
$modx->initialize("xPDO");
 
$modx->cacheManager->refresh();
 
$modx->cacheManager->refresh(array(
    'context_settings' => array('contexts' => array('web'))
));
  
$contexts = array();
  
$query = $modx->newQuery('modContext');
$query->select($modx->escape('key'));
  
if($query->prepare() && $query->stmt->execute())
{
    $contexts = $query->stmt->fetchAll(PDO::FETCH_COLUMN);
}
 
$results = array();
  
$modx->cacheManager->refresh(array(
    'auto_publish' => array('contexts' => array_diff($contexts, array('mgr'))),
    'system_settings' => array(),
    'context_settings' => array('contexts' => $contexts),
    'db' => array(),
    'scripts' => array(),
    'default' => array(),
    'resource' => array('contexts' => array_diff($contexts, array('mgr'))),
    'menu' => array(),
    'action_map' => array(),
    'lexicon_topics' => array()
), $results);
а вот с обновлением индекса увы, решения так и не нашел
    Василий Наумкин
    14 августа 2015, 18:05
    0
    Не проще ли было взять и удалить из консоли директорию /core/cache?

    Ну а импорт нужно переписать с использованием процессоров, тогда будут вызываться события MODX и плагин индексации, который их ловит.
      Валерий Савинов
      14 августа 2015, 19:46
      0
      Проще, но когда клиенту самому требуется очистить кеш, куда безопаснее дать ему ссылку, запускающую скрипт
      site.ru/clear.php
      нежели давать ему доступы на ftp
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
4