• В чем может быть причина сильного увеличения длительности ответа запросов при установке Load Balancer на 2 сервера со стаком MySQL, PHP, Nginx?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Нагрузка на ЦПУ при этом пике 30-40%
    это че за нагрузка при 3рпс? Профилирование нагрузки - первый шаг, балансер и горизонтальное расширение это шаг стопитьсот, когда вы упираетесь в потолок того что может вытянуть сервак. 90% что проблемы в количестве (и качестве) запросов к бд, крайне маловероятно что код у вас настолько сложный, что не вытягивает...

    обращается к основной БД через коннект по приватному IP адресу в сети серверов Амазон.
    Тестом запустите подряд 20-30 разных запросов с разным размером ответа, каждый замерьте, подозреваю что будете не очень приятно удивлены...

    запросы на дополнительном сервере начинают отрабатывать по 5, 15 а иногда и 50 секунд.
    А на основном все остается норм? В любом случае - профайлинг наше все, + под нагрузочным тестированием хоть как-то.
    Ответ написан
    2 комментария
  • Как победить ошибку ERR_CONNECTION_REFUSED во всех браузерах?

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    1 <1 мс <1 мс <1 мс lmlicenses.wip4.adobe.com [127.0.0.1]

    Ааа, так у вас поломанные программки стоят, в hosts у вас прописаны домены, на которые программы стучатся для проверки ключиков, замененные через хостс на локальный адрес, из-за чего собсно ни вы ни программы не могут получить реальные адреса нужных сайтов. А ERR_CONNECTION_REFUSED отдает вам собственная машина.
    Ответ написан
    2 комментария
  • Как загрузить фото из формы в корень сайта в папку img?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Подскажите, что не так

    1) Вы не читаете и не осмысливаете текст ошибки. Не в смысле глазами, а в смысле "что там произошло то?". Для вас текст ошибки проблема, а не путь решения.
    2) Не проверяете то, что интерпретатор считает неправильным, что как бы прямое следствие п.1.
    3) Считаете что знаете что на самом деле лежит в переменных, не заглядывая в реальные данные.
    Ответ написан
    Комментировать
  • Как правильно вставить HTML-код в JSON-файл?

    ThunderCat
    @ThunderCat Куратор тега HTML
    {PHP, MySql, HTML, JS, CSS} developer
    Очевидно что просто вставить текст в кавычки не является правильным способом формировать жсон. Нормальный жсон работает как положено.
    Ответ написан
  • Как с помощью обработчика форм PHP отправлять сообщения о новой созданной заявки в беседу от бота telegram?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Форма отправляется на сервер, далее либо курлом вызывается второй скрипт, либо (если скрипт отправки в тг находится в рамках одного приложения) второй скрипт подключается инклудом после обработчика и обрабатывает форму своим способом.
    Ответ написан
    8 комментариев
  • Язык и инструменты для разработки системы диспетчеризации/сбора данных/мониторинга?

    ThunderCat
    @ThunderCat Куратор тега Веб-разработка
    {PHP, MySql, HTML, JS, CSS} developer
    1. Сервер я представляю как бэкенд разработку.
    Это она и есть в чистом виде.

    Метаюсь между JS (node.js), GO, и Java.
    Странные метания, языки не сказать чтобы были сопоставимы. ИМХО:

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

    Го будет норм, НО это довольно молодой язык, с одной стороны достаточно производительный (что не сказать чтобы как-то сильно его положительно выделяло в представленной задаче), с другой - спецов в него сильно меньше и поддержка выльется в боль с поиском сотрудников и достаточно дорогими спецами.

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

    имею поверхностные знания по написанию кода на C, C++,
    Тогда можно еще глянуть в сторону RUST, но опять же, оно молодое и дороговатое.

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

    3. Стоит ли разбивать подобные проекты на микросервисы? То есть использовать брокер сообщений, который будет раскидывать сообщения от клиентов разным сервисам.
    Зависит, для микросервисов архитектура создает еще один дополнительный уровень сложности, а при предполагаемом небольшом (до сотен тысяч) клиентов особой нагрузки вроде быть не должно. Проще построить монолит и, если возникает нагрузка на определенный внутренний функционал, выносить его в сервис, там есть нюансы и порог с которого все это имеет смысл, так что начинать достаточно типовой проект стоит с монолита в любом случае.
    Ответ написан
    1 комментарий
  • Есть ли способ отключить рекламу на уровне роутера?

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    насчет роутера и прочего не знаю, но если хочется именно без рекламы смотреть ютуб на телеке - возможно подойдет SmartTube, кроме вырезания рекламы так же режет нативные интеграции на популярных каналах, из киллер-фич - имеет выбор скорости просмотра, чего нет в стандартном встроенном ютубе... Единственный нюанс - ставится только с apk файла.
    Ответ написан
    Комментировать
  • Почему скрипт выполняется не до конца?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    рассылка приходит только 1000 пользователям.
    Если прям ровно 1000, очевидно это ограничение ТГ.

    ТГ никаких ошибок не выдает.
    Как это проверяется?
    $res = $this->app->forwardMessage(...)очевидно что-то возвращает, подозреваю ответ в виде саксесс/фэйл, но вы его нигде не используете.

    Посмотрел доку - он возвращает объект Message в случае успеха, и код ошибки в случае неудачного запроса. Проверяйте $response->getMessageId(); для определения удачного запроса.
    Ответ написан
  • Почему элемент header group выходит за рамки контейнера при уменьшении размеров экрана?

    ThunderCat
    @ThunderCat Куратор тега CSS
    {PHP, MySql, HTML, JS, CSS} developer
    Короче, у вас заданы жесткие размеры элементов внутри блока, пример:
    .search__form {
        border: solid 1px;
        width: 622px;
        height: 48px;
        gap: 24px;
        margin-top: 16px;
    }

    Естественно при уменьшении экрана эти элементы останутся такого же размера, а блок контейнер продолжит уменьшаться, так как у него нет никаких ограничений по ширине. Не понятно какого другого поведения вы ждете от такой верстки?
    Ответ написан
  • При отправке данных из js через fetch, php код не исполняется, в чем причина?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    и при загрузке страницы мне сразу выводится "4"
    Логично, так как пост пустой, а не нулл, а в остальных случаях срабатывают проверки на метод пост(вызванные через гет) и непустые пост поля, которые как бы пустые при методе гет.

    но скрипт php как будто работает один раз при загрузке страницы и все,
    Скрипт пхп ВСЕГДА работает 1 раз. При каждом обращении вы создаете запрос, скрипт его отрабатывает и умирает.

    как сделать чтобы при отправке данных скрипт php отслеживал это ?
    Так он отслеживает, просто вы с этим отслеживанием ничего не делаете. Посмотрите ответ сервера в запросе к message.php, ну и сделайте в js обработку ответа фетч запроса какую-то... То что метод называется буквально "взять" вас не на какие мысли не наталкивает? ))
    Ответ написан
    Комментировать
  • Выборка строки из поля MySQL при помощи regex?

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    Смотреть документацию по JOIN, читать про "отношения один ко многим" или, в зависимости от логики приложения, "отношения многие ко многим". Должно помочь.
    Ответ написан
    Комментировать
  • Шифрование уникальной ссылки для пользователя. Как реализовать?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Самое простое решение - шифрование. На первом сайте шифруете строку содержащую дату и время + имя файла + соль, получаете строку для урл. На втором сайте расшифровываете тем же ключом (ну или можно использовать асимметричный шифр и тогда ключ будет публичным на 2 сервере). Если дата не устарела (например время жизни ссылки ставите 1 час и проверяете разницу дат создания ссылки и текущего времени).
    Ответ написан
    Комментировать
  • Как убрать дублирование свойств в SQL?

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    Сто раз обсуждалось. Для атрибутов применяется EAV и связывающие таблицы, для больших массивов данных так же добавляют фасетный поиск.
    Ответ написан
    Комментировать
  • Почему col-xl-10 не работает при указании col-md-8?

    ThunderCat
    @ThunderCat Куратор тега HTML
    {PHP, MySql, HTML, JS, CSS} developer
    Принцип построения блоков в бутстрап описан в документации, а вы прочитали 3 рандомные странички и пытаетесь по ним что-то построить. Каждый адаптивный блок должен быть заключен в row, а внутри уже можно располагать какое-то количество col элементов.

    Так же вся адаптивная страничка должна содержать container, задающий ширину адаптива.
    Ответ написан
    Комментировать
  • Как запретить использовать один токен?

    ThunderCat
    @ThunderCat Куратор тега Веб-разработка
    {PHP, MySql, HTML, JS, CSS} developer
    в куках храню токен и вот задался я таким вопросом, а как запретить использовать этот токен на других устройствах? То есть, что я имею ввиду. Вот есть скажем 2 пк, на одном Вы авторизовались, открыли cookies, скопировали токен и на другом пк его вставили и таким образом вы зашли в аккаунт без авторизации.
    В чем проблема? Так работает вся система куки-зависимых данных (например сессии). Так как куки является приватной информацией в рамках сессии, данные в ней так же считаются приватными и по умолчанию недоступными третьим лицам. По этому все страдания на тему "ой, можно же что-то вытащить и вставить это не безопасно" и прочие страдания юных специалистов по безопасности можно смело взять и выкинуть в психологическую мусорку.

    Если у человека появилась возможность вытащить ваши куки из сессии, проще тут же на месте сменить пароль на свой или вообще сделать с аккаунтом что угодно, не заморачиваясь с поиском кук и прочей фигней. Это вопрос доступа к устройству, а не к данным.
    Ответ написан
  • Как сделать robots.txt и sitemap.xml на мультиязычном сайте?

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    Не особо важно для сайтмапа. Роботс вроде всегда лежит в корне, в нем можно указать все правила для разных языков.
    Сайтмап может "лежать" где угодно, главное правльно внести его/их в поисковые системы.
    Ответ написан
    Комментировать
  • Добавление комментариев при клике на изображение, кто-нибудь видел готовое решение?

    ThunderCat
    @ThunderCat Куратор тега Веб-разработка
    {PHP, MySql, HTML, JS, CSS} developer
    Подобное реализовано на flickr. Можете у них в коде поколупаться.
    Ответ написан
  • Как на php убрать тег html эллемента, и очистить форму?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    По уровню вопроса конечно понятно что гениальности от кода ждать не стоит, но все же...
    Для начала пару занудных замечаний:
    1)
    if($query = $db->query("SELECT `login`, `password` FROM `admin`")){
    Не стоит выбирать все записи из таблицы, если вам нужна одна, та где логины совпадают. Это в целом плохая практика, но еще хуже когда такой подход будет применен к большой таблице. SQL для этого и придуман чтобы так не делать. Так же, если у вас есть таблица пользователи, не нужно дублировать функционал, перенесите админов туда же, указав им уровень доступа или роль.
    2) пароли в бд должны быть соответствующе зашифрованы, используйте соответствующие функции password_hash() и password_verify() при создании и проверке пароля.
    3) Больше совет, чем инструкция: испльзуйте один стиль обрамления кодовых блоков везде, либо текстовые конструкции типа if - endif, либо везде фигурные скобки. Второе предпочтительнее.

    Что касается собственно вопроса, есть несколько вариантов, самый кривой из которых уже написал сеньор Sergei Parfenov. При неверном логине код просто продолжается формой и вы имеете все данные о проверке, включая правильность/неправильность пароля. Стоит отметить что в данном случае блок проверки логина нужно обрамить проверкой метода запроса и вызывать ее только в случае если метод запроса POST (как это сделать - задание на дом).

    Второй вариант более адекватный, так как первый имеет ряд недостатков.
    1) В начале формы создаем переменные в сессии: $_session['message'] и $_session['old'] с пустыми значениями
    2) В блоке проверки логина $_session['old'] присваиваем значения пришедшие из формы $_POST.
    3) Если в ходе проверки у нас возникли ошибки, пишем сообщение об ошибке в $_session['message'].
    4) Выполняем переадресацию. В форме сначала переносим в переменную $message = $_session['message']??'';; и $_session['message'] очищаем. Тоже самое делаем с $old, не забывая что там обычно массив;
    5) Переносим в поля формы старые значения там где это нужно из $old;
    6) Проверяем что лежит в $message, если там что-то есть - выводим сообщение об ошибке.
    Профит.
    Ответ написан
    Комментировать
  • Почему у меня при миграции возникла ошибка в laravel 10?

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    Ошибка однозначно в кривом апгрейде лары до 10 версии. Самое простое что можно сделать - поднять новый проект на десятке, руками перенести код из контроллеров, моделей, миграций, сервисов...
    Ответ написан
  • PHP: Почему 'mb_convert_encoding' не конвертирует простую строку?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    по тому что гладиолус документация?
    Ответ написан
    4 комментария