Свой websocket-сервер на PHP для MODX
https://www.youtube.com/watch?v=klz5G5zVUCs
https://www.youtube.com/watch?v=klz5G5zVUCs
YouTube
Workerman. Свой websocket-сервер на PHP для MODX
В видео я расскажу про классный фреймворк для управления асинхронными событиями, который называется Workerman. Он написан на PHP, очень легко ставится и запускается. Он быстрый и гибкий. Отлично подходит для компонента сообщений.
Статья на сайте htt…
Статья на сайте htt…
This media is not supported in your browser
VIEW IN TELEGRAM
Привет, друзья! Мои подписчики первыми узнают о моих планах 😀 Сегодня с утра решил допилить controlErrorLog. Теперь он будет выглядеть так.
Очередные размышления на тему как в MODX встроить шаблонизатор PHP без костылей и палок.
https://modzone.ru/blog/2020/09/06/new-parsing-concept/
https://modzone.ru/blog/2020/09/06/new-parsing-concept/
modzone.ru
Новая концепция парсинга | Зона MODX - информация о системе MODX Revolution и не только.
Сегодня сделал каркас описанной выше концепции парсинга. Пока только со Smarty. Постарался убрать все раздражающие моменты шаблонизации с Феномом.
Во-первых, рекурсивный парсинг заменён на однократный. Во-вторых, теперь нет проблем с кэширование чанков и файловых сниппетов. В-третьих, отказ от шаблонов в БД. Последние нужны только для ТВшек. Ну и наконец, нет проблем с фигурными скобками в javascript.
По итогам тестирования Smarty выигрывает у Fenom при парсинге 100 чанков около 30%. Это с учётом холодного запуска. Со второго просмотра страницы выигрыш составляет уже порядка 50% - 0,0254 сек против 0,0378 сек. Тут я говорю о Fenom из pdoTools, работающий в режиме MODX шаблонизатора.
Сравнивая эти 2 шаблонизатора могу сказать, что у Smarty больше удобных фишек. Следующий на очереди Blade. Обдумываю, не впихнуть ли их в один пакет. Иначе придётся делать 3 пакета. Один, который меняет логику парсинга, от которого будут зависеть 2 других с шаблонизаторами. Дилемма! 🤔
Во-первых, рекурсивный парсинг заменён на однократный. Во-вторых, теперь нет проблем с кэширование чанков и файловых сниппетов. В-третьих, отказ от шаблонов в БД. Последние нужны только для ТВшек. Ну и наконец, нет проблем с фигурными скобками в javascript.
По итогам тестирования Smarty выигрывает у Fenom при парсинге 100 чанков около 30%. Это с учётом холодного запуска. Со второго просмотра страницы выигрыш составляет уже порядка 50% - 0,0254 сек против 0,0378 сек. Тут я говорю о Fenom из pdoTools, работающий в режиме MODX шаблонизатора.
Сравнивая эти 2 шаблонизатора могу сказать, что у Smarty больше удобных фишек. Следующий на очереди Blade. Обдумываю, не впихнуть ли их в один пакет. Иначе придётся делать 3 пакета. Один, который меняет логику парсинга, от которого будут зависеть 2 других с шаблонизаторами. Дилемма! 🤔
Что интересно, все туториалы и курсы по изучению языков программирования обязательно содержат пример создания TODO функционала. А вот в MODX такого не оказалось. Заговор или модыксеры выше этого? 🤷♂️
А мне вот понадобилось.
А мне вот понадобилось.
Уже сейчас можно попробовать потестить скорость Smarty и Fenom. Считает среднее на 10 запросов по кругу.
http://s22375.h3.modhost.pro/smarty.html
http://s22375.h3.modhost.pro/fenom.html
http://s22375.h3.modhost.pro/smarty.html
http://s22375.h3.modhost.pro/fenom.html
Меня периодически спрашивают, как я генерирую разноцветный геометрический фон для заголовков моих статей на главной странице моего сайта. А я для этого использую специальную js библиотеку
https://github.com/btmills/geopattern
https://github.com/btmills/geopattern
GitHub
GitHub - btmills/geopattern: Generate beautiful SVG patterns
Generate beautiful SVG patterns. Contribute to btmills/geopattern development by creating an account on GitHub.
Мой список TODO для AdminTools. Какие вы считаете нужными?
Final Results
80%
Добавить историю отредактированных файлов (по аналогии с элементами).
15%
Разрешить логин только с одного устройства.
55%
Горячие клавиши. Например, для вызова системных настроек.
35%
Менеджер копи/паста для хранения нескольких значений.
В рамках полноценного использования PHP шаблонизаторов в MODX возникает необходимость в альтернативе pdoTools. Вы поддержали бы идею использования в таком компоненте ORM Eloquent вместо xPDO?
Final Results
92%
Да.
4%
Нет.
4%
Пофиг.
Дошли руки заняться классом modRequest. В одном из своих видео я рассказывал, что это за зверь. Но погрузившись глубже я просто ах...., скажем вежливо, моему удивлению нет предела. 🤮
Несколько раз подряд вызывается метод поиска ресурса по uri. Один за другим. Если ресурсы не кэшируются, то все запросы летят в базу. Но это ещё не всё. Если у вас отключено кэширование карты ресурсов, что советуют делать для сайтов, у которых больше тысячи ресурсов, то поиск происходит так - сначала идет поиск ресурса в базе по uri, берётся его id и следом идёт поиск в базе уже по id. Как вам логика? Нравится?
А если ресурс не найден, то начинаются пляски с uri. К нему добавляется или убирается суффикс контейнера. И опять идёт запрос в базу.🙈
В ZoomX я это безобразие выбросил. И ещё добавил FastRoute в приоритетном режиме. Т.е. сначала проверка роутов, а только потом проверка xPDO. Другие аналогичные пакеты вешают обработку на событие OnPageNotFound, что в итоге удлиняет путь запроса. Зачем делать лишнюю работу (проверки, запросы в базу), если правило уже определено! 🤓
Пакет скоро будет готов. Логика всего этого сложная. Пока пишу тесты. Вот такая новость.
Несколько раз подряд вызывается метод поиска ресурса по uri. Один за другим. Если ресурсы не кэшируются, то все запросы летят в базу. Но это ещё не всё. Если у вас отключено кэширование карты ресурсов, что советуют делать для сайтов, у которых больше тысячи ресурсов, то поиск происходит так - сначала идет поиск ресурса в базе по uri, берётся его id и следом идёт поиск в базе уже по id. Как вам логика? Нравится?
А если ресурс не найден, то начинаются пляски с uri. К нему добавляется или убирается суффикс контейнера. И опять идёт запрос в базу.🙈
В ZoomX я это безобразие выбросил. И ещё добавил FastRoute в приоритетном режиме. Т.е. сначала проверка роутов, а только потом проверка xPDO. Другие аналогичные пакеты вешают обработку на событие OnPageNotFound, что в итоге удлиняет путь запроса. Зачем делать лишнюю работу (проверки, запросы в базу), если правило уже определено! 🤓
Пакет скоро будет готов. Логика всего этого сложная. Пока пишу тесты. Вот такая новость.
Интересная вещь обнаружилась в процессе копания в ядре. Оказывается в информационную схему ресурсов заложена возможность отображение ресурса в разных контекстах через специальные ссылки modContextResource (композитная связь). Т.е. ресурс из одного контекста можно отобразить в других. Например, какие-то общие страницы компании, которые не зависят от контекста. Та же страница "О компании". Сейчас такие задачи решаются через симлинки. Но их нужно создавать в базе. А контекстные ресурсы нет.
Но дело в том, что до реализации этой фичи дело не дошло. Интересно, почему?
У кого-нибудь были задачи, где пригодилась бы такая возможность?
Но дело в том, что до реализации этой фичи дело не дошло. Интересно, почему?
У кого-нибудь были задачи, где пригодилась бы такая возможность?
Вообще, подготовка документации - это важный элемент тестирования функциональности. Пока я пишу документацию к своему компоненту ZoomX (а это я считаю самым сложным элементом этапа разработки), я уже несколько раз пересобирал пакет. Была даже парочка концептуальных правок.
П.С. Справедливости ради надо сказать, что данное утверждение справедливо (сорри за тавтологию), когда вы работаете без заранее составленного ТЗ.
П.С. Справедливости ради надо сказать, что данное утверждение справедливо (сорри за тавтологию), когда вы работаете без заранее составленного ТЗ.
После долгих разговоров рад сообщить, что первая версия моего компонента для альтернативного подхода к использованию PHP шаблонизаторов готова.
https://modzone.ru/blog/2020/10/23/zoomx-first-release/
https://modzone.ru/blog/2020/10/23/zoomx-first-release/
modzone.ru
ZoomX. Первый релиз | Зона MODX - информация о системе MODX Revolution и не только.
Так как с площадки сообщества modx.pro меня попросили, то я начал осваивать другие ресурсы. И вот моя первая статья на Хабре. Прошу поддержать меня, начинающего пугливого хабровчанина.😋
https://habr.com/ru/hub/modx/
https://habr.com/ru/hub/modx/
Habr
MODX — Система управления содержимым с открытым кодом / Хабр
MODX (читается «модэкс») — система управления содержимым с открытым исходным кодом и открытой лицензией. Написана на языке программирования PHP, использует для хранения данных СУБД MySQL или MS SQL[3].