Авто обновление индекса mSeach2 через cron
Может кому пригодится крон для массового обновления индексов #msearch2 #cron
Инструкция:
— создаем фай в корне msearch2_cron.php содержимое кода ниже.
— запуск к примеру curl www.ru/msearch2_cron.php
Инструкция:
— создаем фай в корне msearch2_cron.php содержимое кода ниже.
— запуск к примеру curl www.ru/msearch2_cron.php
<?php
// Отключение буферизации
ignore_user_abort(true);
set_time_limit(0);
ob_implicit_flush(true);
ob_end_flush();
header('Content-Type: text/html; charset=utf-8');
echo '<pre>';
ob_flush();
flush();
define('MODX_API_MODE', true);
require 'index.php';
/** @var modX $modx */
$modx->getService('error', 'error.modError');
$modx->setLogLevel(modX::LOG_LEVEL_FATAL);
$modx->setLogTarget(XPDO_CLI_MODE ? 'ECHO' : 'HTML');
/** @var modUser $adminObj */
$adminObj = $modx->getObject('modUser', ['sudo' => 1]);
$modx->user = $adminObj;
$offset = 0;
while (true) {
/** @var modProcessorResponse $response */
$response = $modx->runProcessor('mgr/index/create', [
'limit' => 1000,
'offset' => $offset,
], [
'processors_path' => MODX_CORE_PATH . 'components/msearch2/processors/'
]);
if ($response->isError()) {
echo "Ошибка: " . $response->getMessage() . "\n";
ob_flush();
flush();
break;
}
$data = $response->getObject();
if ($data['offset'] >= 1) {
echo "Индексировано: {$data['offset']}\n";
ob_flush();
flush();
}
// Если offset == 0 → завершаем
if ($data['offset'] === 0) {
echo "Получен нулевой сдвиг. Индексация остановлена.\n";
ob_flush();
flush();
break;
}
// Обновляем offset для следующего шага
$offset = $data['offset'];
// Если достигли конца
if ($offset == 0) {
echo "Индексация успешно завершена.\n";
ob_flush();
flush();
break;
}
//sleep(1); // пауза между порциями (можно убрать)
}
Поблагодарить автора
Отправить деньги
0