Обход страниц сайта для формирования кеша на D7 и с помощью софта
Последние записи
Для формирования кеша на сайте и нарезания превью картинок иногда ставится задача по обходу всех страниц сайта. Сделать это проще всего двумя путями: собственным скриптом или с помощью стороннего софта
$DOCUMENT_ROOT = $_SERVER['DOCUMENT_ROOT'];
$domainName = 'http://www.site.ru';
$iblockIds = [2,];
$pageNum = 20;
define('NO_KEEP_STATISTIC', true);
define('NOT_CHECK_PERMISSIONS', true);
define('CHK_EVENT', true);
require($_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/include/prolog_before.php');
@set_time_limit(0);
@ignore_user_abort(true);
if (\Bitrix\Main\Loader::includeModule('iblock')) {
$urls = array();
foreach ($iblockIds as $iblockId) {
$sectionIterator = CIBlockSection::GetList(
array(),
array(
'IBLOCK_ID' => $iblockId,
'ACTIVE' => 'Y',
'GLOBAL_ACTIVE' => 'Y',
),
array(
'ELEMENT_SUBSECTIONS' => 'Y',
'CNT_ACTIVE' => 'Y',
),
(
'ID',
'IBLOCK_ID',
'SECTION_PAGE_URL'
)
);
while ($section = $sectionIterator->GetNext()) {
for ($i = 1, $count = ceil($section['ELEMENT_CNT'] / $pageNum); $i <= $count; $i++) {
$urls[] = sprintf('%s?PAGEN_1=%d', $domainName . $section['SECTION_PAGE_URL'], $i);
}
}
$elementIterator = CIBlockElement::GetList(
array(),
array(
'IBLOCK_ID' => $iblockId,
'ACTIVE' => 'Y',
),
false,
false,
array(
'ID',
'IBLOCK_ID',
'DETAIL_PAGE_URL'
)
);
while ($element = $elementIterator->GetNext()) {
$urls[] = $domainName . $element['DETAIL_PAGE_URL'];
}
}
foreach ($urls as $url) {
@file_get_contents($url);
@file_put_contents($_SERVER['DOCUMENT_ROOT'] . '/import.log', $url . "\n", FILE_APPEND);
}
}
Пример запуска php-скрипта из консоли:
php -f /var/www/site.ru/import.php &
До того как наткнулся на данный скрипт, да и сейчас тоже пользуюсь программой SiteAnalyser, которая не только автоматически обходит все страницы, но и генерирует всякую полезную для размышлений информацию
<?ghjhg jgh jhg j?>
Перепечатка материала:
Комментарии