[spoiler]
В мы обсуждали запуск агентов.
Берем упоминавшийся там скрипт cron_events.php, копируем его к себе в каталог php_interface
и после подключения пролога вставляем следующий код:
//подключение модуля поиска
if(CModule::IncludeModule('search'))
{
//В этом массиве будут передаваться данные "прогресса". Он же послужит индикатором окончания исполнения.
$NS=Array();
//Задаем максимальную длительность одной итерации равной "бесконечности".
$sm_max_execution_time = 0;
//Это максимальное количество ссылок обрабатываемых за один шаг.
//Установка слишком большого значения приведет к значительным потерям производительности.
$sm_record_limit = 5000;
do {
$cSiteMap = new CSiteMap;
//Выполняем итерацию создания,
$NS = $cSiteMap->Create("ru", array($sm_max_execution_time, $sm_record_limit), $NS);
//Пока карта сайта не будет создана.
} while(is_array($NS));
}
|
Остается настроить крон для периодического запуска.
Поскольку отсутствует механизм блокировки процесса создания Sitemap, то запуск имеет смысл делать не чаще раза в день.
Желательно в часы наименьшей нагрузки (в их определении может помочь соответствующий отчет из модуля статистики: /bitrix/admin/traffic.php?lang=ru&set_filter=Y&find_date1_DAYS_TO_BACK=14&find_hit=Y).
Но вот задача, оставшаяся нерешенной пока. Статья формируется двумя ссылками, есть detail.php -- общие сведения о предмете статьи и detail_rev.php -- текст статьи (еще есть sub_detail.php, это подстраницы статьи, если таковые есть). Все, что кроме detail.php -- в общем, самостоятельные костыли. Но тем не менее, эти костыли хотелось бы включать в Google Sitemap. "Шаблонизировать", его так сказать (это бы совсем идеально).
#!/usr/bin/perl
undef $/;
$xml = <>;
$xml =~ s#<url>(.*?)<loc>(.*?/path/to/page/)detail.php(.*?)</loc>(.*?)</url>#<url>\1<loc>\2detail.php\3</loc>\4</url><url>\1<loc>\2detail_rev.php\3</loc>\4</url>#gis;
print $xml;
Тоже самое можно сделать и в cron_events.php открывая файлы и перезаписывая их содержимое (preg_replace_all).
И если определена константа BX_CRONTAB_SUPPORT = true, то часть агентов.
какая часть агентов исполняется?