вынос обработчиков хуков в отдельные файлы #131

Closed
rivetweb opened this Issue Nov 15, 2016 · 2 comments

Comments

Projects
None yet
1 participant
@rivetweb

rivetweb commented Nov 15, 2016

  • избавляемcя от eval и склеивания строк в рантайме на каждый запрос на каждую конструкцию get_hook
    было
    return !defined('FORUM_DISABLE_HOOKS') && isset($forum_hooks[$hook_id]) ? implode("\n", $forum_hooks[$hook_id]) : false;
    стало
    return !defined('FORUM_DISABLE_HOOKS') && is_readable($fname = "path-to-hooks-cache/" . $hook_id . ".php") ? $fname : ("path-to-hooks-cache/default.php");

  • получаем ленивую загрузку обработчиков и использование opcache - код лежит в опкеше как код, а не в памяти - как данные

  • оставляем совместимость с расширениями

  • function generate_hooks_cache() генерит набор файлов готовых к исполнению через инклюд;
    в папке кеша типа
    path-to-hooks-cache/fn_forum_link_start.php
    ....

  • get_hook возвращает имя подключаемого файла ("path-to-hooks-cache/" . $hook_id . ".php") или - если не найден такой хук "path-to-hooks-cache/default.php"
    в default.php прописан <?php return null;

@rivetweb rivetweb changed the title from вынос обработиков хуков в отдельный файлы to вынос обработчиков хуков в отдельный файлы Nov 15, 2016

@rivetweb rivetweb changed the title from вынос обработчиков хуков в отдельный файлы to вынос обработчиков хуков в отдельные файлы Nov 15, 2016

@rivetweb

This comment has been minimized.

Show comment
Hide comment
@rivetweb

rivetweb Nov 18, 2016

  • eval заменяем на include

$return = ($hook = get_hook('fn_forum_link_start')) ? eval($hook) : null;

->

$return = ($hook = get_hook('fn_forum_link_start')) ? include($hook) : null;

я тогда попробую тесты сделать. чтобы было видно - есть ли от этого большая польза или нет.

rivetweb commented Nov 18, 2016

  • eval заменяем на include

$return = ($hook = get_hook('fn_forum_link_start')) ? eval($hook) : null;

->

$return = ($hook = get_hook('fn_forum_link_start')) ? include($hook) : null;

я тогда попробую тесты сделать. чтобы было видно - есть ли от этого большая польза или нет.

@rivetweb

This comment has been minimized.

Show comment
Hide comment
@rivetweb

rivetweb Dec 8, 2016

rivetweb#2
в коментах приведен код теста - eval на мелких кусках кода быстрее.
на больших - разницы нет - смысла переписывать на include нет

rivetweb commented Dec 8, 2016

rivetweb#2
в коментах приведен код теста - eval на мелких кусках кода быстрее.
на больших - разницы нет - смысла переписывать на include нет

@rivetweb rivetweb closed this Dec 8, 2016

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment