Fi1osof
С нами с 05 мая 2014; Место в рейтинге пользователей: #105 часов назад
по моему путь не верный у вас в «snippet.sendcode.php», должен быть такой наверное?
require_once MODX_CORE_PATH . 'components/sendit/services/identi...
[СДЕЛАЙ САМ] Авторизация и регистрация по SMS с помощью SendIt 8
6 часов назад
Из-за сложной структуры extJS оказалось, что нужно написать бессмысленно много PHP кода. Когда счет новых процессоров пошел на второй десяток — пришло...
MiniShop3 - чего ждать в Beta версии. 9
7 часов назад
Блин курсор прям чума :-).
Написал промт
Теперь выбери специфичные для организации ВК24 данные. Запиши их в фай импорта системных настроек для MODX...
Испытание ИИ Cursor 3
7 часов назад
Можно сделать самому по этой инструкции
msOneClick Чекбокс Согласия на обработку данных 1
8 часов назад
Во-первых, radio это переключатель, это означает, что он должен иметь какое-то значение изначально, соответственно и валидация не нужна. Во-вторых, ес...
Как кастомизировать сообщения после Регистрации на сайте? 5
Вчера в 12:05
Нужно проверять метод save в файле assets/components/tickets/js/web/default.js
Там лаг с label id и input id и как раз если убрать из label id, то и ...
Указан неверный код защиты от спама. Tickets, как исправить? 2
Вчера в 11:30
Павел, скрипт у вас просто замечательный! Только одно но, или 2, смотря как считать… Сниппет требует от браузеров пользователей очень много ресурсов и...
[xLike] Идеальная система лайков с оптимистичным интерфейсом и правильной формулой 112
03 декабря 2024, 23:11
Ну планируется что расчеты будут делать клиенты на сайте. А чтоб они не могли приписать себе любую цену товара считать цену надо на стороне сервера. Т...
Плюсы и минусы Vue и gtsAPI 20
03 декабря 2024, 19:01
xtype: modx-combo-user
Это xtype (тип поля) самого MODX, выводит всех пользователей modUser
Список всех возможных типов полей
Вывести поле создателя при редактировании ресурса 3
В общем, я тут думал как вам помочь, и вспомнил, что давным-давно Илья Уткин дописывал функционал циклического выполнения кода в консоль (За что Илье отдельное спасибо). ilyaut.ru/cheats/step-by-step-the-script-in-console/
В итоге я написал вот такой скрипт: gist.github.com/Fi1osof/398e64212f1c527958adce83734ddf4b
Его можно использовать для ручной перегенерации кеша всех страниц. Если его запустить, он получит ID-шники всех целевых страниц и перегенерирует их кеш. Выглядит процесс довольно симпатично.
Вот можете воспользоваться этим скриптом. Сохраните его в консоли (функционал такой добавил Сергей Шлоков) и выполняйте когда вам надо.
Повторю логику: для того, чтобы не сбрасывался кеш на каждый чих, сделайте как я написал выше. А если вам надо вдруг сбросить кеш всего сайта вручную, то можете запустить потом этот скрипт. Если вам не хочется ждать по полчаса каждый раз, вы можете добавить в условие выборки только самые нагруженные ресурсы (к примеру, по определенным шаблонам).
Кстати, здесь сразу идея возникает связки этого скрипта с modMonitor. Монитор собирает статистику какие страницы не из кеша отдаются долго, и потом при запуске этого скрипта перегенерируются только те страницы, время генерации которых превышает заданный парог. Получится интеллектуально.
Важно: Для работы требуется минимум console-2.2.1
Ее я отправил на modx.com, но пока еще не опубликовали. Можно вручную подправить в консоли вот этот код.
Как я и говорил, на таком количестве не стоит включать настройки cacheregenerator.regenerate_docs_on_site_refresh и cacheregenerator.regenerate_docs_on_doc_save, иначе на сохранение документа и на сброс кеша сайта у вас будет запускаться механизм регенерации страниц, который в среднем занимает 1 сек на страницу (в зависимости от скорости работы сайта). Таким образом полчаса ждать после сохранения документа — вообще не вариант.
Вариант только такой: отключаете системную настройку syncsite_default и при сохранении редактируемого документа не будет сбрасываться кеш остальных документов, а только текущего, при чем у текущего документа кеш сразу будете перегенерирован. Таким образом вы получаете измененное содержимое страницы сразу в кеше.
Я не придираюсь, я просто пытаюсь понять для себя. Это и для меня все новое и я не один час потратил на поиски подходящего механизма для отправки запросов на сервер средствами php. Меня мой способ устраивает, потому что он отправляет запросы именно по протоколу ws://, ровно так же, как эти же запросы идут из браузера. Крайне не радует перспектива использовать два отдельных протокола и формировать разные форматы данных.
У тебя так же и на стороне браузера формируются запросы?
P.S. на ноде сокеты реализованы на вот этим модулем: www.npmjs.com/package/ws
Весь JS/HTML-фронт тоже имеется, включая JS-чата.
Там, конечно, немного АДъ, так как это все еще эксперименты, но разобраться, думаю, не дофига дело. Чтобы пересобрать фронт со своим измененным кодом просто переходим в папку /public/chat, выполняем команду npm install, чтобы установились все пакеты нужные.
Придется подождать не одну минутку, там много пакетов устанавливается. Когда все установится, вы увидите подобное:
После этого выполняем команду webpack -w (запустится сборщик, прослушивая изменения файлов). Когда вы увидите такое (опять-таки, возможно через пару-тройку минут):
можно будет файлы править.
К слову, использовалась вот эта заготовка фронта: github.com/MODX-Club/modx-shopmodx-frontend
Она же используется и в ShopModxBox, то есть там можно таким же образом пересобирать фронт.
То есть, если кому интересно, может сап попробовать поправить фронт (к примеру, добавить звуковые уведомления о новых сообщениях). И даже не лезя в серверную часть самого чата, можно получить свой собственный клиент (с оговорками, конечно, но все же).
С ее помощью запросы на node-сервер без проблем слать. Сампл:
Только хотел написать отдельный топик про выложенный node-клиент для нашего чата, а тут такое… Ну, тогда не буду писать отдельного топика, просто ограничусь комментом (сорри за оффтоп).
Итак, на днях я писал, что мы разрабатываем автономный node-чат (его работу можно увидеть на главной странице нашего сайта). Вопрос: хочет кто-нибудь себе такой же? Если да, то вот он: www.npmjs.com/package/node.social-client
Конкретно этот компонент — не полная версия всей системы, а только веб-сервер с чат-клиентом. Для полноценной работы ему еще нужен отдельный сервер, обрабатывающий непосредственно запросы. Как написано в ридми, вы можете использовать для этого наш сервер wss://modxclub.ru:8100 (эти сообщения будут видны на главной странице нашего сайта). Если кому-то нужен выделенный сервер для тестов, пишите в личку, подниму (бесплатно только сегодня). Вторая часть системы (уже сам чат-сервер) появится чуть позже.
Если вдруг кто пропустил сообщение Василия по поводу где можно развернуть такой сервер, уточняю: на modhost.pro
И посуточно можно, и по часам, и даже по минутам можно.
Да.
Это скорее на плечах движка магазина, того же minishop или shopmodx.
Опережая чей-то возможный вопрос «А почему такой универсальный компонент не писать на базе самого MODX-а?», я отвечу:
1. MODX сложнее в переносе. Если вы его из одной папки в другую перенесете, он у вас уже работать перестанет, надо конфиги править. node.js-проект этим не страдает, его просто перекидываешь в любую папку (или на любой другой комп, где стоит подходящая версия node.js) и все, запускаешь.
2. node.js один компонент можно запустить сразу кучу инстансов, просто указав разные порты. Это круто. Имея тот же модуль чата, можно из одной папки запустить несколько сотен отдельных комнат.
3. Установка компонентов там и там — просто небо и земля. В ноде прописал нужный компонент в package.json, выполнил npm install и все (или вообще просто npm install package). После этого в любом месте кода пишешь var module = require(module); и полетело.
В общем, я несколько лет пишу компоненты под MODX, делал не мало интеграций с различными сторонними системами, и знаю что делаю.
1. В node.js используется крутой механизм подгрузки и переопределения компонентов, например var booking = require($path_to_module);
По умолчанию будет использоваться автономный модуль работы без каких-то внешних систем. Но его можно будет легко переопределить другим модулем типа var booking = require($path_to_extra_module); в котором прописано var extra_booking = require($path_to_module); export extra_booking; (Это в общих чертах). И в этом переопределяющем компоненте будет перехват штатных событий и взаимодействие с MODX-сайтом (типа запросить имеющийся объект, отправить уведомление и т.п.).
2. Мы умеем читать конфиги MODX-а и работать с базой сайта, включая префиксы таблиц. В MODX-модель компонента мы добавим нужные классы и мап-файлы, чтобы легко можно было средствами xPDO работать с таблицами компонента напрямую, при желании.
3. Даже при работе с сайта напрямую в ноду, не придется выполнять никаких лишних проверок доступа пользователя (авторизован или нет) и т.п. Мы пересылаем запрос на сам сайт с передачей кукисов, так что даже получая запрос из браузера не напрямую, а через ноду, MODX будем воспринимать это как прямой запрос себе из браузера, так что все авторизации и сессии пользователей будут учитываться как есть.