• В чем может быть проблема у простого php-роутера?

    AlexMcArrow
    @AlexMcArrow
    ev09, - многосайтовый проект - это единая система управления множествами сайтов?
    а) единый роутинг + каждый сайт отдельная CMS = даже не представляю какие могут быть проблемы, но они будут и их будет много
    б) единый ройтинг + каждый сайт инстанс одной CMS = всё проще, одна CMS - одна концепция роутинга.
    Суть роутинга - это не просто формирования пути в адресной строки для запуска того или иного блока CMS, это "систематизация" вызова.
    Пример: /catalog/tovari_dlja_doma/item/123 = /{module_name}/{slug_in_module}/{action|view}/{item_id_in_module}
    Таким правилом можно закрыть 80% роутов.

    Нужна "систематизация" роутингов - это позволит получить гибкость в развитии модулей (их количестве и функциональности).
  • В чем может быть проблема у простого php-роутера?

    AlexMcArrow
    @AlexMcArrow
    ev09, eval - совсем плохо.
    "Всё что угодно, но не eval" - уж лучше пишите мега-регулярку )
  • В чем может быть проблема у простого php-роутера?

    AlexMcArrow
    @AlexMcArrow
    Сергей delphinpro, еще лучше.
    Но фломастеров много и на вкус они разные.
    А как я понял, автор занимается изысканиями - так что всё подойдет.
  • В чем может быть проблема у простого php-роутера?

    AlexMcArrow
    @AlexMcArrow
    Алексей Уколов, полностью согласен. Они быстры, удобны и дает хорошее покрытие.
    Но это инструмент который нужно уметь использовать. Если сделать единую комплексную регулярку для обработки всех роутов - это МОЖЕТ привести к лишним операционным расходам.
    Как вопрошает автор
    то вопрос чем простая регулярка плоха и чего она не учитывает? какие подводные камни могут быть?
    , я лишь указал на такой подводный камень. Наступит на него автор или нет покажет время.
  • Как обеспечить возможность одновременного вызова эндпойнта, пишущего в БД?

    AlexMcArrow
    @AlexMcArrow
    Алексей Николаев, самое простое организовать "контроль блокировки" на стороне nodejs-app\redis\memcached.
    Как пример, создаете "блок данных" в котором храните ID той записи по которой будет выполнятся апдейт. При поступлении запроса проверяете наличие ID:
    если НЕТ - добавляете и начинаете выполнять запрос, а по его завершении удаляете ID
    если ЕСТЬ - делаете отбивку тому кто прислал такой запрос - мол, уже обрабатываем
  • Почему сервер добавляет левые данные в вывод?

    AlexMcArrow
    @AlexMcArrow
    66demon666, может быть я не правильно понял вашу проблематику?
    Проблема в том что после JSON-строки есть дополнительный текст ОК?
    Если так: замените ВСЕ die('ok'); на die; И не будете получать на выходе ok
  • Почему сервер добавляет левые данные в вывод?

    AlexMcArrow
    @AlexMcArrow
    die('ok');
    Как раз и возвращает
    https://www.php.net/manual/ru/function.exit.php
    status
    Если status задан в виде строки, то эта функция выведет содержимое status перед выходом.
  • Где можно получить повышение квалификации backend разработчику?

    AlexMcArrow
    @AlexMcArrow
    Как вы писали (книжки читаете, митапы смотрите) - применяйте на практике.
    Самостоятельно наращивайте свой опыт, путем внесения улучшения в уже существующий проект.
    Два зайца:
    - само развитие и повышение скила
    - развитие проекта
  • Как сделать уникальную ссылку из избранных постов wordpress?

    AlexMcArrow
    @AlexMcArrow
    1) списки. (плейлисты в ютуб)
    Пользователь создает новый "список" - добавляет в него элементы.
    "список" - это суб-структура "избранного"
    Каждый "список" храниться в таблице списков, имеет: ИД, Имя, Владельца.

    2) уникальный набор
    Пользователь указывает в своем "избранном" чем хочет поделиться -> список ИД элементов приходит на сервер -> (https://hashids.org/php/) -> получаете уникальный идентификатор (который сам по себе содержит список ИД)
    Такой вариант не требует хранения в БД
  • В каком виде лучше передавать данные из вебсокет сервера?

    AlexMcArrow
    @AlexMcArrow
    postya, ну у вас же просто зада передать - вам же потом на клиенте нужно это все отобразить.
    Тут уже все от специфики набора данных: может их можно группировать по каким-то логическим группам.
    Как пример: на сервере данные приборов (температура, влажность и давление) по 5 объектам =>
    {
    "object1": {
      "temp": 23,
      "wet": 90,
      "pres": 975
      },
    "object3": {
      "temp": 24,
      "pres": 976
      },
    "object5": {
      "wet": 92,
      }
    }

    поля по которым нет изменений "отсекаем" + объекты по которым нет данных, так же, "отсекаем"

    Если вы реально хотите уменьшить пакет данных.
    С другой стороны - а нужно ли оно?
    Если данные будут передаваться по медленной и "дорогой" сети (GPRS) - то лучше смотреть в сторону бинарных форматов. Если же в рамках локальной сети 10\100\1000Мб - выигрыш на списках
  • Почему теряется часть данных в curl multi?

    AlexMcArrow
    @AlexMcArrow
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10); - важен что бы "отвалиться" если прокси или конечный ресурс недоступен.
    А вот: curl_setopt($ch, CURLOPT_TIMEOUT, 10); - может быть вашей проблемой.
    Возможно прокси "медленный" и не успевает за 10 секунд работы CURL успеть переслать все данные.
    Попробуйте убрать или увеличить значение
  • В каком виде лучше передавать данные из вебсокет сервера?

    AlexMcArrow
    @AlexMcArrow
    Думаю самый оптимальный вариант - слать только "дельты".
    Приведу пример:
    Тип значения = Значения = Время последнего значения на сервере
    > передоверяемые данные
    ---------------------
    темп = 20 = 1
    влаж = 90 = 1
    > {t:20,v:90}
    тем = 21 = 2
    влаж = 90 = 1
    > {t:21}
    ---------------------
    Сформируйте таймер для отправки данных на клиента (каждые Х-секунд), сохраняйте временную метку последнего отправления данных Т = отправляем только те данные что старше Т
    При таком подходе вы будете передавать только изменившийся данные.
    Учтите, что при подключении клиента - нужно отправить все данные (так как клиент новый или переподключился после разрыва связи и данные могли устареть) и запомните для данного клиента Т - что бы в последующем отправлять только "дельту".

    Удачи.
  • Как распарсить json чтобы не было кавычек у координат?

    AlexMcArrow
    @AlexMcArrow
    Павел Сидоров, приведите пример кода который "читает" эти данные.
    Для примера:
    $fullJSON = json_decode( $jsonString, true );
    $completeJSON = array_map( function ( $feature ) {
        $feature['geometry']['coordinates'] = json_decode( $feature['geometry']['coordinates'], true );
        return $feature;
    }, $fullJSON['features'] );

    Итог будет такой:
    Array
    (
        [0] => Array
            (
                [type] => Feature
                [id] => 156
                [geometry] => Array
                    (
                        [type] => Polygon
                        [coordinates] => Array
                            (
                                [0] => Array
                                    (
                                        [0] => Array
                                            (
                                                [0] => -520.219
                                                [1] => -1223
                                            )
    
                                        [1] => Array
                                            (
                                                [0] => -26.2188
                                                [1] => -1227
                                            )
    
                                        [2] => Array
                                            (
                                                [0] => -26.2188
                                                [1] => -81
                                            )
    
                                        [3] => Array
                                            (
                                                [0] => -520.219
                                                [1] => -81
                                            )
    
                                        [4] => Array
                                            (
                                                [0] => -520.219
                                                [1] => -1223
                                            )
    
                                    )
    
                            )
    
                    )
    
                [properties] => Array
                    (
                        [description] => 401
                        [fill] => #ff931e
                        [fill-opacity] => 0.3
                        [stroke] => #e6761b
                        [stroke-width] => 2
                        [stroke-opacity] => 0.9
                    )
    
            )
    
        [1] => Array
            (
                [type] => Feature
                [id] => 157
                [geometry] => Array
                    (
                        [type] => Polygon
                        [coordinates] => Array
                            (
                                [0] => Array
                                    (
                                        [0] => Array
                                            (
                                                [0] => -3546.84
                                                [1] => 2290.81
                                            )
    
                                        [1] => Array
                                            (
                                                [0] => -2390.84
                                                [1] => 2290.81
                                            )
    
                                        [2] => Array
                                            (
                                                [0] => -2394.84
                                                [1] => 1790.81
                                            )
    
                                        [3] => Array
                                            (
                                                [0] => -3542.84
                                                [1] => 1790.81
                                            )
    
                                        [4] => Array
                                            (
                                                [0] => -3546.84
                                                [1] => 2290.81
                                            )
    
                                    )
    
                            )
    
                    )
    
                [properties] => Array
                    (
                        [description] => 404
                        [fill] => #ff931e
                        [fill-opacity] => 0.3
                        [stroke] => #e6761b
                        [stroke-width] => 2
                        [stroke-opacity] => 0.9
                    )
    
            )
    
    )
  • Как распарсить json чтобы не было кавычек у координат?

    AlexMcArrow
    @AlexMcArrow
    Возьмите данные из object►features►0►geometry►coordinates и еще раз распарсите как JSON.
    И JSON - сам ни чего не делает, это делает та функция которая преобразует данные в JSON-строку, скорее всего так сформировали изначальные данные.
  • Как действительно ограничить максимальное время выполнения скрипта PHP?

    AlexMcArrow
    @AlexMcArrow
    Первое что приходит на ум - внешний контроль.
    Запустите родительский скрипт, он запустит воркера и будет следить сколько тот работает - дольше = смерть через KILL
  • Как правильно реализовать систему блокировки пользователя?

    AlexMcArrow
    @AlexMcArrow
    Кстати, ваш вариант имеет "задел на будущее".
    Если блок проверки основания для блокировки (расчет сколько) вынести в отдельную функцию, а в триггере ее вызывать, это позволить реализовать другие алгоритмы блокировки (функции принятия решения) и дополнительно (или вместо) вызывать их в триггере. Можно даже реализовать целую систему из таких компонентов...
    Вот только я думаю Система авторизации и блокировки не весь функционал вашей системы - и есть ли смысл для одной операции строить целую систему?
  • Как правильно реализовать систему блокировки пользователя?

    AlexMcArrow
    @AlexMcArrow
    Ваше решение работает.
    Алгоритм реализованный вами не только выполняет функцию блокировки но и формирует статистику - что уже больше самой задачи.
    Если рассуждать "как правильно" - ИМХО серебряной пули нет.
  • В чем проблема phpmailer?

    AlexMcArrow
    @AlexMcArrow
    $mail->Username = '"daw@mail';
    скорее всего нужно написать полный домен
    $mail->Username = '"daw@mail.ru';
  • Unity не видит disconnect от сервера, если его вызывает другой Unity, есть идеи?

    AlexMcArrow
    @AlexMcArrow
    itrushkoff, я думаю обязательно нужно посмотреть другой пакет
    Version 1.0.2(current)
    Released: Sep 25, 2014
    - это совсем уже "давно", за это время многое изменилось...
  • Как из NodeJS получить доступ к файлу на удаленной машине для обработки его модулем Tail?

    AlexMcArrow
    @AlexMcArrow
    Олег,
    Если есть возможность исполнять часть кода удаленно - было бы супер. Но я о таких методах, не в курсе.
    Как передать данные в функцию на соседнем сервере.....
    - скопировать туда ваш код)

    Все же посмотрите в сторону Vector.dev
    Вы ставите его на VDS из "секретного" там только конфиг - как и что читать и куда слать.
    На своей стороне так же ставите его и принимаете данные от VDS и например пишите в лог - теперь он для вас локальный.

    Более того с помощью Вектор`а можно сразу разобрать данные (распарсить) и записать в БД (на вашей стороне)