Здравстуйте!
Есть небольшой но достаточно функциональный сайт с приличной посещаемостью. Сайт использует очень бедный по своих возможностях самописный template engine, который позволяет вывести в темплейтах переменные и кое-как внедрить if-else логику. Приходиться выносить немалые куски html-кода (в случаях, например, циклов) в скрипты и при этом смешивать между собой логику и представление. Поставили перед собой задачю заменить существующий template engine на более продвинутый и в тоже время хороший в плане производительности. Посмотрели в сторону Template Toolkit'а и plTenjin. Первый очень мощный, богатый и зрелый продукт, но в плане производительности не очень радует. Второй, быстрый, но для perl в бете, и при этом реализация желает быть лучшей. В тоже время наткнулись на еще один интересный и быстрый (судя по бенчмарках) template engine
ctpp, но внедрить его не получилось. Мне получилось его скомпилировать, при этом получились программа, с помощью которой можно скомпилировать темплейт, и библиотека в ввиде so-файла, которая делает все темплейтные дела. Но, perl-модуль, написанный для этого шаблонизатора никак не хочет поднимать (или не хочет видеть) библиотеку и выдает ошибку:
Can't locate loadable object for module HTML::CTPP2 in @INC
Код модуля небольшой и простой:
package HTML::CTPP2;
use strict;
use vars qw($VERSION @ISA @EXPORT @EXPORT_OK);
require Exporter;
require DynaLoader;
require AutoLoader;
@ISA = qw(Exporter DynaLoader);
@EXPORT = qw(
);
@EXPORT_OK = qw(
);
$VERSION = '2.5.9';
bootstrap HTML::CTPP2 $VERSION;
# Thread-safe
sub CLONE_SKIP { return 1; }
# Autoload methods go after =cut, and are processed by the autosplit program.
1;
Выходя из случившихся проблем возникли такие вот вопросы:
1) Где perl ищет динамические библиотеки ввиде so-файлов?
2) Какие могут быть причины того, что модуль не подгружает библиотеку?
3) Как мне убедиться в том что библиотека действительно пригодна для загрузки и использования? Тоесть другими словами, как можно проследить шаги загрузки такой библиотеки и найти слабое место?
4) И посоветуйте, пожалуйста, хорошие шаблонизаторы для perl'a, которые вы использовали и остались довольными.
Буду благодарен за любую подсказку и совет!
Здравствуйте, TheOldMan, Вы писали:
TOM>4) И посоветуйте, пожалуйста, хорошие шаблонизаторы для perl'a, которые вы использовали и остались довольными.
Уже несколько лет пользуюсь вот таким велосипедиком, для моих нужд пока полностью хватало:
http://about.thedeemon.com/products/pts/
Скорость не сравнивал, но в 99% случаев там идет просто вывод скэшированной страницы с диска.
Здравствуйте, TheOldMan, Вы писали:
....
TOM>1) Где perl ищет динамические библиотеки ввиде so-файлов?
как в системных директориях libs
TOM>2) Какие могут быть причины того, что модуль не подгружает библиотеку?
so скомпилирован неправильноб не та версия crt, не хватает других зависимых библиотек, много чего ..
TOM>3) Как мне убедиться в том что библиотека действительно пригодна для загрузки и использования? Тоесть другими словами, как можно проследить шаги загрузки такой библиотеки и найти слабое место?
начать с трассировки файловых операций (
strace для linux,
filemon для win)
TOM>4) И посоветуйте, пожалуйста, хорошие шаблонизаторы для perl'a, которые вы использовали и остались довольными.
Text::Template
TOM>Буду благодарен за любую подсказку и совет!
Здравствуйте, achmed, Вы писали:
A>начать с трассировки файловых операций (strace для linux, filemon для win)
Для винды лучше
process monitor от того же автора.