elementSync - Еще один способ разработки MODX-приложений в IDE

Привет.
Этот элемент можно считать вторым кусочком компонента который я описал на статью одну пониже, а можно рассчитывать как отдельную тузлу. Предыстория такова: Я не использую файловые сущности pdoTools, идеологически считаю что транспортные пакеты это отличный способ для разработки компонентов, но не сайтов. Так же Gitify меня не вдохновил. Думаю имею на это право :)
Более того — частенько приходится не создавать что-то новое на MODX, а редактировать существующее. И все это нужно а) каким-то образом версионировать б) разрабатывать используя удобные инструменты в IDE. Много времени назад я использовал для этого gitmodx и он меня в целом устраивал. Но есть нюансы, которые мне категорически не нравились.
Первое — Gitmodx хакает системные файлы MODX и подменяет себя в качестве парсера. Это плохо, но в целом ничего страшного в этом нет. Но все таки бесит. Второе — Gitmodx не мапит объекты в базе, а следовательно там где нужно выбрать элемент который MODX ищет в базе — невозможно по определению. Например, шаблон письма для клиентов minishop2 приходилось создавать в админке так или иначе. Третье — исходя из второго пункта, получить массив всех чанков в системе так же трудно, т.к половина из них это файловые сущности, а половина — в базе. Грустно, хотя за всю практику мне не приходилось этого делать.

Что я предлагаю?
Я накидал небольшой файлик, который делает двустороннюю синхнронизацию чанков, сниппетов, шаблонов и плагинов в системе.

Исходный код можно почитать по ссылке: тыц
Код я буду править и добавлять что-то новое по мере своих потребностей, а так же буду его немного менять так как не все реализации что я описал мне нравятся.

Итак, код который вы видите выше я расположил в папку core. Назвал его я sync.php. Расположил там, потому что хочу и потому что вы при установке, обычно, закрываете эту папку от внешнего доступа, что позволяет добавить некоторый элемент безопасности.

В корне сайта я создал вот такую вот структуру папок:


В дальнейшем вы можете версионировать только папку elements и все входящие в нее папки.

Дисклеймер: Перед тем как мы продолжим, я хочу описать сценарии, при которых я крайне нерекомендую использовать это решение:

  1. У вас тестовая версия сайта расположена на виртуальном хостинге. Не надо. Скорее всего вам не хватит памяти для выполнения скрипта. Поднимите локальную версию на вашем компьютере. Могу посоветовать использовать Docker. Готовый и простой конфиг с TODO я уже сделал для вас: тыц
  2. У вас нет доступа к SSH и вы собиратесь выполнять код в браузере. Вообще не дай бог. Лимитов веб-сервера вам не хватит еще абсолютно точнее, нежели памяти.
Когда мы все утрясли — поведаю вам о трех параметрах которые реализованы в данный момент:
  1. php sync.php import
    данная команда перенесет все текущие элементы сайта в статические и аккуратно положит вам в папочки выше.
  2. php sync.php export
    данная команда наоборот запушит все изменения на сервер в виде статических файлов. Вы можете изменять и делать с ними все что захотите. Важно — прочитайте документацию по статическим файлам, чтобы у вас не возникало вопросов с кешированием.
  3. php sync.php deploy
    это сырой запрос в базу, который отлинкует статический файл, и у вас останется версия та, что замапилась в базе
Таким образом, на время разработки и используем статические файлы и можем создавать их в IDE, а когда прекратим — просто снять статику и не потерять в скорости.

Небольшое видео о работе: тут
(почему-то не удалось встроить)

Есть вопросы? Задавайте, отвечу.
Так же я всегда рад донатам на пиво и прочие принадлежности.

Спасибо!
Павел Бигель
25 февраля 2020, 19:55
modx.pro
5
482
+12
Поблагодарить автора Отправить деньги

Комментарии: 50

Александр Мельник
25 февраля 2020, 22:27
0
Круто, но нужно будет вникнуть по подробнее, а когда на это находить время не ясно.
Вопрос! Я столкнулся с этим когда пытался использовать gitmodx Зернова. У него тоже есть скрипт для перегонки чанков (и не только с базы в файлы) но был такой глюк (ну или скажем недочет). Если чанки в базе названы корректно (одним словом и латинскими буквами) то все ок. Но мне иногда приходят на обслуживание созданные кем-то сайты, где чанки названы к примеру так — «слайдер на главной странице» — тоесть киррилицей и в несколько слов и modx это позволяет. Но при переводе это в файлы — вместо названия «кракозябры» и плюс скрипт в gitmodx удалял после этой операции данные из базы. И ты остаешься с файлом, который уже не знаешь как назывался и не можешь его использовать.
В общем просто проверьте на такую возможность.
    Павел Бигель
    26 февраля 2020, 00:08
    0
    Спасибо. Не тестил, отпишусь
      Павел Бигель
      26 февраля 2020, 09:16
      0
      Проверил. Добавил транслитерацию для всех элементов, уже на гите
        Павел Бигель
        26 февраля 2020, 19:02
        0
        UPD: Убрал. Возникла проблема, что почему не могу сделать выборку по элементу, если в условии ставлю static_file

        Поверил твой кейс — работает и на кириллице )
      Александр Мельник
      25 февраля 2020, 22:36
      0
      И не по теме вопрос, а вернее не вопрос даже, а удивление. Я вижу вы используете докер. И что правда удобно и нужно? Я вот второй день чисто ради новых знаний (хочется хоть чуток быть в тренде, хотя я совершенно не испытываю необходимости в этом инструменте) изучаю документацию и видео на эту тему и признаюсь — не понимаю ни как это работает ни по большому счету зачем оно нужно. (нет красивыми фразами навешать на уши я смогу кому угодно что это очень нужно, что помогает деплою да и вообще песня а не инструмент, но по факту..) Смотрел видео где вполне адекватный человек признается в любви докеру, хорошо и доступно поясняет и приводит примеры. И первый пример — это файл на python который выводит hello world. Один текстовый файл. Делает из него образ, подключает образ python3 и запускает контейнер на основании этого образа. И… образ весит 950 мегабайт. Один текстовый файлик с одной строкой кода превратился в 950 мегабайт какой-то информации. Может посоветуете какую-то хорошую информацию? А то вопросов в миллион раз больше чем ответов.
        Jury
        25 февраля 2020, 23:19
        0
        Выбирать конечно нужно от поставленной задачи. Где-то без докера не обойтись, а так есть Alpine 5mb, вместо ubuntu, его зачастую и используют в докерах, да даже если ubuntu, — то все ровно в докер для спокойной жизни.
          Павел Бигель
          26 февраля 2020, 00:09
          +1
          Докер не нужно использовать, там где он не нужен. Для дев окружения он подоходит. Для деплоя сложных приложений — тоже.
          Сайтики на MODX деплоить в докере не стоит)
            Pavel Zarubin
            26 февраля 2020, 01:34
            +3
            В modx как уже сказали докер ни к чему, вот ситуации когда докер — необходимость, а не привелегия:

            1) Вам присылают проект, а у него конфигурация писалась на nginx, а у вас на машине развернут апач или наоборот, без докера вам придется переписывать конфиги под свой сервер, а конфиги бывают ой какие не простые

            2) Вам присылают проект, а там скажем очереди лежат в Redis, у вас на машине нет редиса, без докера вам пришлось бы его устанавливать, настраивать и т.д. и стоит оно того скажем ради одного проекта где работы на пол часа?

            3) У вас на машине php7.1, а в проекте который вам прислали в одном из пакетов минимальная версия php — 7.3, опять же вам нужно доустанавливать 7.3 на свою машину со всеми модулями только чтобы развернуть этот проект

            В основном докер решает такие проблемы в мире PHP, все что он делает по сути — это запускает на вашей машине — виртуальную и конфигурирует ее в соответствии с проектом, это настолько облегчает как разработку, так и деплой, что люди сознательно идут на уменьшение производительности храня продакшен в контейнерах
              Pavel Zarubin
              26 февраля 2020, 01:43
              0
              Или вот из недавнего и реальной практики:

              В проекте логи хранятся в MongoDB,
              Новая часть проекта в PostgreSQL,
              А старая часть проекта в Mysql

              При этом выпилить что то одно хотя бы даже временно естественно не вариант, т.к. все ломается. Без докера мне пришлось бы настраивать у себя MongoDB и PostgreSQL, разбираться как это сделать и тратить возможно ни один час просто чтобы развернуть проект, хотя работа, которую я должен сделать вообще никак не связана ни с монгой, ни с постгрессом
                Александр Мельник
                26 февраля 2020, 08:59
                0
                Спасибо. Чисто на интуитивном уровне я именно так и понимаю.
                Нужно наверное заняться практикой и много вопросов отпадет.
                Что я не понимаю
                — все таки это не виртуальная машина, а виртуальный контейнер и внутри его нет операционной системы. Контейнер использует ядро гостевой операционки. Но при этом внутри контейнера есть своя файловая система. По крайней мере я так сужу из ответов, которые получил задавая комменты на ютубе. То как знать какая именно внутри файловая система? Какие там есть директории и так далее. И плюс зачем тогда существует докер образ Ubunty? Тоесть при запуске этого образа развернется полноценная операционная система? Со своей файловой системой, своими демонами, процессами и так далее? У меня есть ubuntu server установлен на физическом сервере. Установлен docker и запущен контейнер ubuntu. У меня есть возможность подключится к виртуальной ubuntu? по ssh или как либо по другому?
                — насколько я понимаю, при остановке запущенного контейнера все данные в нем теряются. Ведь контейнер создается из образа и если произошел сбой или же запланированная остановка контейнера, то новый контейнер запуститься из того же образа и будет девственно чист. И как тогда работают контейнеры с базами данных? Да я вижу что к контейнеру можно примонтировать внешнюю директорию и хранить данные на ней, но получится что вам каждый подключаемый в свой проект образ (вернее создаваемый на нем контейнер) придется очень долго и нудно конфигурировать, подгоняя под реалии операционной системы на которой он запущен (к примеру даже у линуксов не у всех структура и название директорий операционной системы одинакова). Тоесть есть три ветки продуктов линукса- основанные на redhat. arch и debian. И они во многом отличаются. Если на одном сервере установлена centOS (родитель redhat) а на другом Ubuntu (родитель Debian) то их файловые системы хоть и схожи но не идентичны. Но это ладно, но ведь сервер может работать и на windows, а docker тоже может работать на windows. И как тогда запустить контейнер с приложением, если у него в докер файле например пути прописаны /usr/bin и содержаться команды для оболочки bash
                — от имени какого пользователя это все работает? Как и кто это контролирует? К примеру я недавно испытывал технические проблемы на одном сервере, что возникала ошибка при работе с сессиями в php. Оказалось что в конфигурации php указывается директория где будут хранится файлы сессий и пользователь от имени которого запускался интерпретатор php не имел прав на запись в эту директорию. Или к примеру веб сервер apache запускается от имени пользователя www-data и только он может полноценно работать. А кто пользователь внутри контейнера? Тот кто его запустил? Но если судить по документации на офф сайте то докер работает из под root а значит мы все процессы запустим от root?
                  Pavel Zarubin
                  26 февраля 2020, 10:51
                  0
                  все таки это не виртуальная машина, а виртуальный контейнер и внутри его нет операционной
                  Это так, но гораздо легче для понимания воспринимать докер как виртуальную машину, он монтирует внутреннюю файловую систему и интернет интерфейс во внешнюю и/или наоборот, что позволяет заниматься разработкой извне

                  То как знать какая именно внутри файловая система? Какие там есть директории и так далее.
                  А тут уже как настроите и какую ОС выберете

                  Тоесть при запуске этого образа развернется полноценная операционная система? Со своей файловой системой, своими демонами, процессами и так далее?
                  Именно, при том, частой практикой является своя ОС под каждый модуль, т.е. например nginx + php-fpm в одном контейнере, mysql в другом, redis в третьем

                  У меня есть возможность подключится к виртуальной ubuntu
                  Да, также как и выполнить внутри любую команду извне

                  насколько я понимаю, при остановке запущенного контейнера все данные в нем теряются
                  Да, если они не смонтированы извне

                  У меня есть возможность подключится к виртуальной ubuntu? по ssh или как либо по другому?
                  да, через интерфейс докера docker exec

                  И как тогда работают контейнеры с базами данных
                  У любой базы данных есть физические файлы) Вот их и монтируют

                  придется очень долго и нудно конфигурировать
                  Как правило в компаниях работают всегда на одном и том же стеке и есть уже готовые образы лежащие где то на сервере обновляемые удаленно девопсами под каждый стек, они конфигурируются один раз и дальше просто поддерживаются, а проекты извне на доработку обычно приходят уже с конфигурацией и это не ваша забота, а забота заказчика если у него в контейнере что то не работает)

                  то их файловые системы хоть и схожи но не идентичны
                  Да, но в целом это забота девопсов, ну или вас, если вы собрались делать свой собственный и не повторимый образ, в любом случае «наружу» торчат только файлы проекта, иногда конфигурации nginx/apache и файлы баз данных

                  например пути прописаны /usr/bin и содержаться команды для оболочки bash
                  Контейнер настраивают обычно при старте разработки проекта, если проект готовый, вам его нужно просто развернуть одной командой и не зависимо от вашей ОС, внутри все директории и оболочки будут те, что предусмотрел и продумал девопс, в целом докер для этого и нужен, чтобы приложение не зависело от окружения разработчика

                  от имени какого пользователя это все работает?
                  Опять же, как настроит разработчик, но чаще всего от виртуального рута, вам нужно прокинуть собственного пользователя в виртуальный рут, для этого существует команда docker login, это делается один раз

                  пользователь от имени которого запускался интерпретатор php не имел прав на запись в эту директорию.
                  Т.к. в контейнере пользователь обычно один, он виртуальный и от его имени все работает, такая проблема в принципе исключена

                  Фух :) Вроде бы на все ответил, но я могу в чем то ошибаться, у нас в компании есть devops которые отвечают за такие вещи, нам разработчикам только и остается что в новые проекты уже подтягивать один из готовых контейнеров, я не гуру докера но вроде бы на ваши вопросы ответил правильно)

                  По сути если хорошо владеете линуксом, то и с созданием своего контейнера проблем возникнуть не должно, просто начните пробовать, тут теория в целом не нужна, а если вы ни разу не разворачивали даже локальное окружение на линуксе, то тут стоит начать с изучения линукса, а не докера. Но в целом у нас в компании есть люди, которые вообще в докере никак не понимают и никогда даже локальное окружение не разворачивали, однако это не мешает им быть хорошими программистами и эффективно его использовать, просто не лезут в конфиги, а используют готовое. И без личного девопса в интернете образов полно на любой вкус и цвет
                    Александр Мельник
                    26 февраля 2020, 15:15
                    0
                    Спасибо за столь подробное описание.
                    Добавить особо не чего, единственно что смущает — в большинство случаев я к примеру и не знаю где лежат файлы той же mysql базы данных. Даже если я сам админю сервер и поднимаю все нуля, то я делаю apt install mysql-server и все, я не выбираю куда сложить файлы. А выходит чтобы использовать в докере mysql то придется серьезно повышать уровень знаний, иначе на первый взгляд покажется что все работает, пока контейнер не упадет и все данные из него просто пропадут.
                      Александр Мельник
                      26 февраля 2020, 15:18
                      0
                      О боже, у вас в команде есть даже девопсы и прочие люди)) У нас есть я и уже около 40 проектов, часть из которых разработана мной, а 80 процентов — набранные со всего мира сайты на джумле, битриксе, опенкарте, слим и еще несколько разных cms.
                        Pavel Zarubin
                        26 февраля 2020, 15:25
                        0
                        Ну я не работаю уже с MODX в целом) По этому да, у нас есть и девопсы и аналитики и тестировщики и нет CMS, только фреймворки :)

                        В CMS докер — это абсолютно не нужный оверкилл, сайты на CMS как правило так часто не дорабатываются, они не зависят от внешних пакетов, а доработки в основном такого размера, что минусы докера никогда не окупятся сэкономленным временем от его использования
                          Павел Бигель
                          26 февраля 2020, 15:27
                          0
                          Но dev окружение я все равно на нем собираю. Почему бы и нет, собственно )
              Антон
              26 февраля 2020, 03:08
              0
              Чёт я не понял: например у меня есть боевой проект, я хочу его элементы сделать версионированными, для этого я просто выполняю скрипт с командой импорт, что все элементы из базы распихивает по файлам и после этого работаю с этими файлами? И как-то обрабатывается случай, когда появляются новые элементы? Я просто не могу вкурить, что делает опция эскпорт и деплой.

              Или процедура такая: я сначала делаю импорт, меняю как надо файлы, синкаю их с дев-сервером, например, а после этого делаю экспорт, который эти файлы фигачит обратно в базу? Просто не понятно, к чему там танцы с переводом на статику?
                Павел Бигель
                26 февраля 2020, 08:46
                0
                Или процедура такая: я сначала делаю импорт, меняю как надо файлы, синкаю их с дев-сервером, например, а после этого делаю экспорт, который эти файлы фигачит обратно в базу?
                Ага

                Просто не понятно, к чему там танцы с переводом на статику?
                Статические файлы можно редактировать из под IDE, т.к они физически находятся на диске.
                  Антон
                  26 февраля 2020, 11:08
                  0
                  А деплой тогда зачем нужен?
                    Павел Бигель
                    26 февраля 2020, 11:11
                    0
                    Статические файлы работают медленно.
                    Что делает функция Deploy — описано
                      Алексей Соин
                      26 февраля 2020, 11:55
                      0
                      Статические файлы работают медленно.
                      а на сколько медленнее? их же еще можно и кэшировать. Тотже modx.pro используется статические файлы, я чтото не замечал, чтобы он работал медленно.
                        Павел Бигель
                        26 февраля 2020, 11:57
                        0
                        Не, статические файлы pdoTools — это одно. С ними, с большего, все ок.
                        А вот статические файлы MODX — это жуть.
                        При чем это жуть настолько, что тебе может даже не хватать памяти для рендера страницы)))
                          Алексей Соин
                          26 февраля 2020, 12:02
                          0
                          Ну этото понятно))) я вообще за всё время ни разу не видел, чтобы на каком то проекте использовались статические файлы самого modx) а через тотже fenom со статикой работать одно удовольствие, если не считать статических сниппетов, они в fenom ужасно работают, постоянно кэшируются и выдают неверные данные. 😥
                            Сергей Шлоков
                            04 марта 2020, 09:13
                            0
                            если не считать статических сниппетов, они в fenom ужасно работают, постоянно кэшируются и выдают неверные данные.
                            Можешь рассказать подробнее?
                            Yurij Finiv
                            04 марта 2020, 08:44
                            0
                            Павел можешь подробно описать, использую статические файлы MODX, что-то не встречал такое, может потому что у меня связка подгрузка файлов на pdoTools и MODX. Разница была небольшая когда если шаблон инклудить через pdoTools и если делать статику на MODX
                  Алексей Соин
                  26 февраля 2020, 10:55
                  +2
                  чтобы не писать каждый раз
                  php sync.php import
                  можно создать файл без расширения
                  sync
                  в котором написать:
                  #!/usr/bin/php
                  <?php
                  ...
                  тогда можно будет запускать скрипт уже через команду
                  sync import
                    Павел Бигель
                    26 февраля 2020, 11:06
                    0
                    Да можно хоть в sourcerc кинуть при желании и называть команду magic ))
                    Андрей
                    28 февраля 2020, 00:04
                    0
                    Павел, вопрос!?
                    А если в IDE создать доп папку в чанках и закинуть туда tpl-ки, они не будут синхрониться?
                    Иначе, работает только по твоей структуре без группировки?
                    У меня не пошла синхронизация из созданной папки. Когда перенес, все сработало.
                      Павел Бигель
                      28 февраля 2020, 09:02
                      0
                      Действительно баг. Выпущу фикс.
                        Павел Бигель
                        28 февраля 2020, 09:26
                        0
                        Пофиксил
                          Андрей
                          28 февраля 2020, 11:31
                          0
                          Благодарю!
                          UPD. Скрипт зашел. А нельзя добавить ТВ через него?
                          Читал, про них отзывы. Но если бы была возможность хотя насоздавать их и рассортировать, а потом зайти в админку и настроить, уже легче жить сразу.
                            Павел Бигель
                            28 февраля 2020, 11:34
                            0
                            А есть какой-то практический смысл от статичных тивишек?
                            Я просто не совсем понимаю зачем.

                            Добавить, в принципе совсем не проблема.
                              Андрей
                              28 февраля 2020, 12:26
                              0
                              А мы разве не используем статичные файлы исключительно для синхронизации?
                              Я к тому, что они же ни на, что не влияют. Все равно все в БД.
                              Или я не совсем правильно понял основную мысль?!

                              ТВ-шки. Мне показалось это удобнее.
                              Хотя сейчас зашел в админку, посоздавал ТВ-шки и сам задумался.
                              С другой стороны, имея возмость скопипастить название TV удобнее в код вставлять. Не нужно заходить в браузер. Как вариант.
                        g0dzilla
                        28 февраля 2020, 01:28
                        +3
                        Кстати вопрос по теме не по теме для разработчиков на idea…
                        Медленно, но уверенно изучаю idea плагонизацию, в отдельных проектах юзаю феном, поэтому сейчас занимаюсь разработкой плагина в idea, который будет адекватно работать с reformat, синтаксисом, быстрым линком к шаблону (через ctrl) из extends, include и т.д. Вообщем полный фарш…
                        С феном то все понятно, его закончу, но вот мысли у меня сделать отдельно такой плагин и для modx, который бы работал бонусом со всеми выше перечисленными объектами (шаблоны, чанки) напрямую с бд. Как это сделать удобно — без понятия, но вот прочитав вашу идею с «tmp» файловым хранилищем, который синхронизируется с бд — у меня появилась мысль синхронизацию перетащить полностью на phpstorm (idea)… Т.е. по факту шторм будет напрямую работать с бд, минуя файлики modx… (Это пока мысль)
                        Собственно сам вопрос, на сколько это было бы актуально, и сможем ли мы сообществом сделать адекватную модель работы такого плагина?
                          Василий Наумкин
                          28 февраля 2020, 04:22
                          +1
                          С феном то все понятно, его закончу, но вот мысли у меня сделать отдельно такой плагин и для modx, который бы работал бонусом со всеми выше перечисленными объектами (шаблоны, чанки) напрямую с бд.
                          Нафига оно надо, если будет нормальная навигация по Fenom тегам?
                          Мне лично только её не хватает при работе из IDE, синтаксис MODX уже давно не использую.

                          P.S. Есть вот такой древний плагин для Fenom. Он очень сырой, но может чем-нибудь пригодиться.
                            g0dzilla
                            28 февраля 2020, 11:25
                            0
                            Нафига оно надо, если будет нормальная навигация по Fenom тегам?
                            Тут больше не поддержка синтаксиса modx, а поддержка работы того же феном напрямую с бд. Та же навигация.
                            Создал проект (в шторме), получил экспорт в виде тех же файлов, отредактировал что нужно, и в одно нажатие импорт ушел…
                              Павел Бигель
                              28 февраля 2020, 11:28
                              0
                              Каким образом шаблонизатор относится к БД?
                                g0dzilla
                                28 февраля 2020, 11:40
                                0
                                формально, никаким. Один плагин, тупо для работы с феном, другой плагин, для синхронизации объектов (по аналогии с вашим скриптом). Но для навигации по шаблону modx они друг другу нужны, т.к. части самого шаблона могут быть раскиданы между бд и файлами. Простите, если не понятно объясняю ¯\_(ツ)_/¯
                                  Павел Бигель
                                  28 февраля 2020, 11:44
                                  0
                                  А, я видимо не так понял.
                                  Тогда да.

                                  Мне кажется прямой связи делать не нужно. Если бы я проектировал такое ПО, думаю я бы средствами idea формировал бы карту элементов на условном YAML и в дальнейшем бы двигался по файлу не затрагивая базу в принципе.
                                    g0dzilla
                                    28 февраля 2020, 11:51
                                    0
                                    вот в том то и дело, что в исходном варианте {include 'tplname.tpl'} феном ищет шаблон tplname.tpl из директории, указанной в настройках самого феном. А в случае с modx версией Василия, он ищет в чанках (бд), если явно не указана ссылка на файл. И такие моменты встречаются довольно часто.(по разнице в навигации)
                            Сергей Шлоков
                            28 февраля 2020, 08:41
                            0
                            Были аналогичные мысли по феному. Но чтобы сделать вдумчиво, надо погружаться в Java. Я не нашел лишнего года.
                            А вот с базой ты погорячился. Напрямую работать можно только при условии, что сервер MySql доступен снаружи. Часто такое бывает?

                            А вообще тема нужная.
                              g0dzilla
                              28 февраля 2020, 11:34
                              0
                              Я не нашел лишнего года.

                              Для плагинов Idea этого, как оказалось, и не нужно. В привычном софте jetbrains, после шторма, любой ооп язык легко поддается чтению и навигации. Да, безусловно, есть нюансы в каждом языке, но я обычно опираюсь на готовый код самого JB. Например, для плагина феном я местами дублировал функционал плагина smarty, но разумеется, со своим сахаром. На хабре недавно статья вышла от баду, там ребята вообще пилят свой плагин под компанию. Но в целом, да… главное найти на это время.

                              сервер MySql доступен снаружи. Часто такое бывает?
                              в 90% случаев, с которыми я сталкивался — да, внешний доступ к бд был.
                                Павел Бигель
                                28 февраля 2020, 11:38
                                0
                                90% случаев это совсем не секьюрно. Хотя бы через ssh тунель, но в открытую держать БД опасно
                                  g0dzilla
                                  28 февраля 2020, 11:44
                                  0
                                  как держать коннект с бд — это уже (на самом то деле) отдельная тема. Шторм из коробки умеет работать с базами (и через тунель, и напрямую, и даже через валидацию сертификатом). Мне останется только изучить api работы этого плагина (плагина работы с бд) и использовать созданные коннекты именно в нем
                            Антон
                            29 февраля 2020, 08:26
                            0
                            У вас тестовая версия сайта расположена на виртуальном хостинге. Не надо. Скорее всего вам не хватит памяти для выполнения скрипта
                            Идея: сделать обработку пакетной. Добавляешь параметр с размером порции, обрабатываемой за один раз, как только достигаешь этого значения, пишешь в сессию оффсет и перезапускаешь скрипт, он тут-же из сессии подхватывает оффсет и продолжает. И так пока данные не кончатся. Вроде у Ильи Уткина на сайте где-то было что-то похожее про импорт или экспорт вот оно. Там это всё в консольке сайта делается, ибо у неё есть фича встроенная, но можно это вручную повторить, главное — идея.
                              Павел Бигель
                              02 марта 2020, 14:24
                              0
                              Мысль клевая
                              Но не кажется что слишком много телодвижений, когда можно просто создать тестовую версию там, где у тебя хотя бы 128 мегабайт пхп лимита есть?)
                                Антон
                                02 марта 2020, 14:27
                                0
                                Ну тестовую-то можно, а вот сами сайтики на проде бывают без такой роскоши. Часто заказчики не особо заморачиваются с хостингом и простенький шаред покупают.
                                  Павел Бигель
                                  02 марта 2020, 14:33
                                  0
                                  Дык на прод ты положишь версию ту, которая прошла после команды deploy)
                                  А там уже не нужно столько памяти
                                    Антон
                                    02 марта 2020, 14:55
                                    0
                                    А если сайт уже есть и тебе надо сначала с него стянуть элементы? Для пустого проекта — да, это не так важно, но многие, как я, захотят это применить в уже существующем проекте.
                                      Павел Бигель
                                      02 марта 2020, 16:03
                                      0
                                      Так смотри, ты создаешь копию сайта в локалке и делаешь с ним все что захочешь.
                              Павел Бигель
                              20 марта 2020, 11:47
                              0
                              Планируется большое обновление к концу марта
                                Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
                                50