Comments 16
способ определения "что же у нас из зенда тащится в проект" явно далёк от идеала :).
почему не использовали tokenizer?
да и какая-то каша у вас в примере. То ZendCompiler, то ZendMake. Тем более нету ZendCompiler::make() :).
почему не использовали tokenizer?
да и какая-то каша у вас в примере. То ZendCompiler, то ZendMake. Тем более нету ZendCompiler::make() :).
0
пока писал заметку, кое чего поменял.
исправил
исправил
0
чтот то недоступен сервер. http://www.mocksoul.ru/
все хотел посмотреть этот пример(еще из статьи про оптимизацию) - но скипт выдает тока пхп код.
все хотел посмотреть этот пример(еще из статьи про оптимизацию) - но скипт выдает тока пхп код.
0
ooops :) try now!
0
там вообще впринципе мало что понятно. Но можно выдрать extract_good_source() (убивает require, комментарии, whitespace левый... :)
принцип - запускать через бразуер, чтобы был доступ к APC (статистика по загрузке файлов тащится оттуда). В проекте уже это портировано с APC на XCache - если надо, могу выложить (почти тоже самое в общем-то). Так вот. Смотрит в xcache/apc по файлам. Находит те у которого больше всгео запросов. Считает их как выполняющиеся "всегда". Затем у остальных файлов выстраивает процент - сколько типа грузится. Рисует табличку на экране и красным показывет те новые штуки, что он выбрал но в массиве autoloadfiles не обнаружил. Берём файлик и руками пишем в autoloadfiles. Перезапускаем скрипт с ?SAVEFILE и он всё соберёт. Just for example.
принцип - запускать через бразуер, чтобы был доступ к APC (статистика по загрузке файлов тащится оттуда). В проекте уже это портировано с APC на XCache - если надо, могу выложить (почти тоже самое в общем-то). Так вот. Смотрит в xcache/apc по файлам. Находит те у которого больше всгео запросов. Считает их как выполняющиеся "всегда". Затем у остальных файлов выстраивает процент - сколько типа грузится. Рисует табличку на экране и красным показывет те новые штуки, что он выбрал но в массиве autoloadfiles не обнаружил. Берём файлик и руками пишем в autoloadfiles. Перезапускаем скрипт с ?SAVEFILE и он всё соберёт. Just for example.
0
посмотрел на ваш скрипт.
не использовал tokenizer потому, что не знал о нем )) но, на мой взгляд регулярками нагляднее и короче)
способ определения файлов для сборки может быть совершенно любой. Можно собирать отдельно ZF и отдельно файлы приложения. Можно ZF помодульно, пофайлово или в зависимости от APC-попаданий. Можно все вместе. По вкусу.
не использовал tokenizer потому, что не знал о нем )) но, на мой взгляд регулярками нагляднее и короче)
способ определения файлов для сборки может быть совершенно любой. Можно собирать отдельно ZF и отдельно файлы приложения. Можно ZF помодульно, пофайлово или в зависимости от APC-попаданий. Можно все вместе. По вкусу.
0
Смысл есть. Спасибо за идею и реализацию.
0
Уупс. Предложенный класс неправильно обрабатывает комментарии, точнее — принимает за комментарии то, что ими не является. Например, Zend_Locale_Data строка 162:
после // код обрезается.
if ($newpath != '//ldml') {
после // код обрезается.
0
да с комментариями действительно проблемы. В Zend_CAche вырезаются строки типа $this->method('php://');
Нужно либо вырезать комменты с начала строки, либо действительно исползьовать токенайзер.
Мои реглярки после исправления выглядят так:
Нужно либо вырезать комменты с начала строки, либо действительно исползьовать токенайзер.
Мои реглярки после исправления выглядят так:
$pattern[] = '%(^\$)%';
$replacement[] = '';
$pattern[] = '%^\s*#.*%m';
$replacement[] = '';
$pattern[] = '%/\*.*?\*/%sm';
$replacement[] = '';
$pattern[] = '%^\s*//.*$%m';
$replacement[] = '';
$pattern[] = '%(require_once|include_once|require|include) [("\'](.*?)[)"\'];%';
$replacement[] = '';
$pattern[] ='%^\s+$%sm';
$replacement[] = '';
$pattern[] ='%(\n){2,}%';
$replacement[] = "\n";
0
Здравствуйте. :) Писал в прошлом такую вещь на основе tokenizer, в итоге, не понравилось. Советую взглянуть в сторону PHC, там есть очень интересный туториал: http://www.phpcompiler.org/doc/tutorial6…, на основе которого можно построить такую систему. Жаль, что все преимущества ручного труда начисто элиминируются акселераторами. По крайней мере, у меня при включенном Xcache с отключенной проверкой модификаций разницы между производительностью собранного и обычного проекта нет.
0
у меня разница при xcache даже с выключенной проверкой модификации файлов - трёхкратная. Инклудится примерно 140 файлов (т.е. собираются в один).
0
Разница есть! У меня к примеру в 3-4 раза производительность стала выше!
0
Ни у кого случаем нет актуальной версии?
0
Sign up to leave a comment.
PHP класс для сборки инклюдов в один файл