У меня на одном из сайтов довольно большое количество новостей. Так вот, если их вдруг становится больше 3 000 - инф.система работать отказывается и на любую попытку открыть список новостей или новость - гнусно матерится, присылая заодно вот такие письма:
Здравствуйте!
Только что на сайте произошло событие, информация о котором представлена ниже:
Дата: 10.02.2012 00:33:53
Событие: <strong>Предупреждение:</strong> XSLTProcessor::transformToDoc() [<a href='xsltprocessor.transformtodoc'>xsltprocessor.transformtodoc</a>]: #6 name for в файле /home/b/*****/public_html/modules/Xsl/Xsl.class.php (строка 289) Стек вызовов:
Файл: modules/Xsl/Xsl.class.php, строка 289,
Файл: modules/InformationSystems/InformationSystems.class.php, строка 8283,
Файл: hostcmsfiles/lib/lib_1/lib_1.php, строка 150,
Файл: modules/Kernel/Kernel.class.php, строка 2491,
Файл: hostcmsfiles/data_templates/12.htm, строка 112,
Файл: modules/Kernel/Kernel.class.php, строка 2516,
Файл: templates/template7/template.htm, строка 84,
Файл: index.php, строка 1080
Статус события: Средний уровень критичности
Пользователь: #####
Сайт: -
Страница:
IP-адрес: 66.249.66.230
Система управления сайтом HostCMS,
Пока спасаюсь удалением части старых новостей, но через какое-то время их снова становится больше 3000, да и жалко резать старые новости.
Собственно, вопрос: сталкивался ли кто-то с подобным? может это только у меня что-то не так? А возможно это ограничения Халявы? Или у меня руки не оттуда?
P.S. на техподдержку не рассчитываю, так как все-таки Халява, но может проверите на платных версиях?
Видимо проблема не в общем количестве, а в том, что они выводятся на одну страницу с разбивкой на страницы 1-2-3-4-5 и проблема возникает при построении этих самых ссылок на разбивку.
Рекомендую обратиться в поддержку для более точного анализа причин.
Спасибо за оперативный ответ.
Да, похоже, что проблема именно с разбивкой. Увеличил количество выводимых на странице элементов (было 3, стало 4) - все работает. Вернул назад - проблема появилась.
На самой странице пишет:
Предупреждение: XSLTProcessor::transformToDoc() [xsltprocessor.transformtodoc]: runtime error: file /home/b/*****/public_html/ line 247 element param в файле /home/b/*****/public_html/modules/Xsl/Xsl.class.php (строка 289)
Предупреждение: XSLTProcessor::transformToDoc() [xsltprocessor.transformtodoc]: xsltApplyXSLTTemplate: A potential infinite template recursion was detected. You can adjust xsltMaxDepth (--maxdepth) in order to raise the maximum number of nested template calls and variables/params (currently set to 3000). в файле /home/b/*****/public_html/modules/Xsl/Xsl.class.php (строка 289)
Я пока в код не лез, но судя по всему, разбивка осуществляется рекурсивным методом, и за глубину рекурсии отвечает переменная xsltMaxDepth, которая по дефолту равна 3000. В принципе,теоретически, ее можно увеличить. Не подскажете, где?
ArtZ, эта переменная не относится к самой HostCMS, это параметр libsxlt, определяющий максимальную глубину рекурсии для предотвращения зацикливания.
Данный параметр находится в компетенции хостера.
Если у вас достаточное количество узлов, можете попробовать переписать пагинатор, уйдя от итеративного вызова именованного шаблона, и использовав цикл по методу Пиза, это уменьшит глубину рекурсии, хотя, в общем случае, может стать причиной неполного вывода элементов пагинации, если в общее число узлов в документе меньше необходимого количества страниц.