[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, то часть агентов.
какая часть агентов исполняется?