Автоматическая генерация карты сайта

Рейтинг: 18.3359  
Новая
Предложил Винниченко Константин 19.06.2013 13:15:15

Автоматическая генерация карты сайта

Уже писали на форуме

http://dev.1c-bitrix.ru/community/forums/forum6/topic16666/


Выкладываю свой вариант реализации create_sitemap.php
<? require_once ($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
$show_echo = true; //Показывать сообщения (для отладки)
$set_time_limit = 7200; //Время работы скрипта в секундах
$site_id = "s1"; //Индификатор сайта для которого создаем карту
//Этот пример не является примером пошаговой индексации.
//Для этого надо вызывать функцию ReIndexAll только один раз за запуск скрипта.
//А промежуточное состояние (NS) можно сохранять например в файле.
if(CModule::IncludeModule("search"))
{
   set_time_limit(7200);
   if($show_echo) echo "Запуск! (set_time_limit = ".ini_get('max_execution_time').")<br />";
   $NS = false;
   $NS = CSearch::ReIndexAll(false,10,$NS);
   while(is_array($NS)) $NS = CSearch::ReIndexAll(false,10,$NS);
   if($show_echo) echo "Проиндексированно: ".$NS."<br />";
   //В этом массиве будут передаваться данные "прогресса". Он же послужит индикатором окончания исполнения.
   $NS = array();
   //Задаем максимальную длительность одной итерации равной "бесконечности".
   $sm_max_execution_time = 0;
   //Это максимальное количество ссылок обрабатываемых за один шаг.
   //Установка слишком большого значения приведет к значительным потерям производительности.
   $sm_record_limit = 5000;
   do
   {
      $cSiteMap = new CSiteMap;
      //Выполняем итерацию создания,
      $NS = $cSiteMap->Create($site_id,array($sm_max_execution_time,$sm_record_limit),$NS);
      //Пока карта сайта не будет создана.
   } while(is_array($NS));
   if($show_echo) echo "Карту успешно собрали. Готово.";
}
else
{
   if($show_echo) echo "Ошибка: Не могу создать модуль поиска!";
} ?>


Установка:

1. Создать папку в корне сайта auto
2. Создать файл .htaccess написать туда
Options -Indexes 
ErrorDocument 404 /404.php

php_value display_errors 1
#Ради этого параметра и нужен данный файл, скрипт будет выполняться пока не закончиться секунды
php_value max_execution_time 7200
3. Запустить скрипт (http://www.site.ru/auto/create_sitemap.php) из под браузера и проверить что завершаются корректно
4. Настроить автозапуск на кроне, так же проверить, что завершение успешно
Для TimeWeb
Выполняемая команда:
/usr/bin/wget -q -O - http://www.site.ru/auto/create_sitemap.php

Разработчикам

Прошу избавить людей от ручного издевательства и реализовать автоматическую генерацию карты сайта в Битриксе

Рейтинг: -1.1305  
Шеин Дмитрий 20.06.2013 17:53:31
Опасный скрипт. Сайт вешает наглухо.
Рейтинг: 0  
Винниченко Константин 21.06.2013 09:48:46
Это лишь пример, он не идеален. Я такого не наблюдал, а во вторых возможно если и вешает, то вашу сессию у других пользователей должен открываться сайт в штатном режиме.
Рейтинг: 0  
Краснов Виктор 23.08.2013 20:38:33
Да уж, меня реально убивают такие вещи, что их приходится настраивать руками. Или агенты на кроне например....
Рейтинг: 1.0688  
Печуркин Дмитрий 16.06.2015 09:40:04
А есть возможность запускать генерацию карты сайта основываясь на конкретных настройках сделанных в админке ?
Рейтинг: 0  
Кузнецов Павел 17.08.2017 13:46:36
По прежнему нету