• Как создавать, принимать и обрабатывать socket?

    @Vitsliputsli
    Как задумывался PHP и какой он сейчас - это абсолютно разные языки. Сейчас, нет никакой проблемы написать демона в PHP ("чтобы программа постоянно крутилась в фоне"), соответственно и web-sockets тоже.
    Единственная сложность - это должно быть понимание асинхронности, но это безотносительно к языку.
    Действительно, в какой-то степени, возможно будет проще написать web-sockets на Go, но это если у нас просто чат и не требуется обработка запросов, иначе реализация на тредах в Go могут оказаться гораздо сложнее, чем реализация через потоки в PHP.
    И да, соглашусь, для такой задачи и если нет опыта, то лучше SSE.
    Написано
  • Как сделать так, чтобы при нажатии на форму не обновлялись данные в другой?

    @Vitsliputsli
    пых не умеет асинхронно перезагружать страницу

    да вполне себе он может асинхронно загружать страницы, другое дело, что в браузере его никто не запускал, чтобы он там чтото мог загрузить. да и асинхронность здесь вообще не при делах.
    Написано
  • Почему global не действует на переменную, инициализированную во внешней функции?

    @Vitsliputsli
    gvg1, из примеров выше не ясно, но возможно вам нужно замыкание, в PHP его нужно явно объявлять.
    Написано
  • Почему MySQL не правильно сохраняет файл?

    @Vitsliputsli
    PDO и prepared statements - это разные вещи. Для защиты от инъекций и чтобы "не съедалась" информация помогут prepared statements. Будете ли вы при этом использовать PDO или mysqli без разницы.
    Написано
  • Как исправить конструктор класса для подключения к Базе данных через PDO?

    @Vitsliputsli
    Читайте ошибки из лога, там доступно будет написано в чем проблема.
    И удалите бессмысленный и вредный try catch - ошибка и так упадет в лог, а продолжать работу при мертвой базе скорее всего бессмысленно.
    Написано
  • Еще один вопрос про абстрактные классы на примере Laravel?

    @Vitsliputsli
    В данном случае можно было и не объявлять его абстрактным, но вот так разработчикам захотелось, чтобы явно указать программисту, что класс не следует использовать напрямую.

    Я бы сказал, что в данном случае - обязательно объявлять класс абстрактным и разработчикам необходимо было это сделать, чтобы явно указать программисту, что класс не следует использовать напрямую.
    Есть техническая реализация, а есть логическая, по-логике здесь нужен абстрактный класс, чтобы показать что этот класс не полная реализация, а некий шаблон на основе которого нужно будет делать свои классы. И здесь это очевидно благодаря одному слову abstract без написания многострочных комментариев.
    Написано
  • Как правильно лоигровать ошибки php?

    @Vitsliputsli
    kolomat, так к слову, пользователь может захотеть хоть код писать, и ему это надо обеспечить. Но, это не значит, что нужно брать код пользователя и выполнять на сервере. Пользователь пишет код на своем DSL, а мы пишем парсер, который его обрабатывает и компилирует в легитимные конструкции уже исполняемого языка. Тоже самое с вашими конфигами, тоже самое с любыми данными приходящими от пользователя, они должны быть обработаны и проверены, для исключения любого внедрения недопустимого кода.
    Написано
  • Возможно ли закрыть файл, открытый через include?

    @Vitsliputsli
    Aspirant555, вряд ли. Код из файла не просто "лежит" в нем, он встраивается в текущее тело программы - классы, константы, объявления функций. Попытаться выкорчевать их оттуда не тривиальная задача, поиск всех необходимых для выгрузки элементов, а также зависимых от них, потребует слишком много времени. А делать это придется монопольно, останавливая весь скрипт. Не говоря уже о том, что к памяти потом придется какой-то дефрагментатор прикручивать.
    Поэтому такое возможно только на изолированных модулях, а при таких раскладах проще, быстрее и надежнее это решать архитектурно, разными процессами. Да и демону большие фреймворки не нужны, а fpm умеет шарить код между своими воркерами.
    Даже скомпилированные в машинный код модули не всякий отважится выгружать в runtime, чего уж говорить про высокоуровневый байт-код.
    Написано
  • Mac Mini M2 базовая версия подойдёт ли для Python Backend разработки?

    @Vitsliputsli
    возможности по апгрейду памяти в данной модели - нет

    Отличный аргумент, чтобы вообще не брать такую машину.
    Комуто до 22 года хватало 8Г, по мне уже лет 10 назад 16 это минимум, тем более если придется работать с виртуалками, а если и проект большой, то и 32Г может не хватать. Не придется - отлично, но заранее себя ограничить - плохой выбор. Опять же, задачи у всех разные.
    Написано
  • Как открыть дополнительное окно терминала через SSH?

    @Vitsliputsli
    Как бы графику прокинуть можно и через ssh, не проблема. Другое дело, что WiFi-autopwner - это просто скрипт и графика здесь вообще не при делах. Главное, что в чем ошибка уже написано.
    Написано
  • Как пробросить SSH на сервер без внешнего ip?

    @Vitsliputsli
    А в чем проблема подключиться по SSH через промежуточный хост? - используйте jump хост.
    Недопустимо держать ключ SSH на промежуточном хосте? Пробросьте порт через ssh.
    Написано
  • Какие характеристики ноута для начинающего?

    @Vitsliputsli
    rPman, имелось ввиду не спровоцирует, а не будет мощных отвлекающих факторов. Понятия не имею, что может вызвать интерес, но хоть время другое, люди все те же.
    Написано
  • Какие характеристики ноута для начинающего?

    @Vitsliputsli
    rPman,

    Я помню, был тем самым ребенком, которому купили по минимуму

    Быть может поэтому появился интерес как это все работает, когда стало неинтересно играть в 2 тормознутые игры?
    Написано
  • Где можно показать свой код?

    @Vitsliputsli
    Ответ дан, но так к слову, с чего вы все взяли, что код 4х циферный, вполне возможно, он такой пока 4 цифр хватает, как перестанет хватать, он станет 5и циферным.
    Написано
  • Как сделать один запрос вне зависимости от количества переходов?

    @Vitsliputsli
    Елена Кермояк,
    проблема с прибавкой ключей на следующего босса. То есть у меня всего 100 ключей например и когда пользователь бьет например босса номер 5, а другой(ие) разных, то получается так что добавляется через раз дополнительный ключ на какого-то из этих боссов

    Вы реально считаете, что кто-то что-то понял из этого повествования?

    В общем, скорее всего обычный race condition. А решается оно пониманием того, где это состояние, поэтому обвешивать блокировками нужно не update. Блокировать БД нужно перед проверкой значения и снимать блокировку после обновления, чтобы предотвратить изменение БД в этот промежуток. А проверку вы нам почему-то не показываете...
    Либо решить это без блокировок (что разумеется гораздо лучше), например, вставив проверку значения в UPDATE. Например:
    update payments set amount=amount-1 where (amount-1)>=0

    Здесь у всех записей amount уменьшаем на 1, но только в том случае, если результат будет положительным.
    Написано
  • Почему идет высокая загрузка CPU?

    @Vitsliputsli
    Valdis12, зомби не расходуют CPU, они уже мертвы, это лишь признак того, что процессы нормально не завершаются, разбирайтесь почему.
    Что касается CPU, то что непонятно? По выводу top видно, что glances и cadvisor сожрали 30%, остальные 20% сожрала node с товарищами. Вот и ваши 50%.
    В htop другая картина, потому как он каждый выше указанный процесс разбил на отдельные потоки. В нем кстати тоже можно включить показывать их вместе.
    Написано
  • Можно ли узнать ip и др.?

    @Vitsliputsli
    По выданному СОРМ макадресу/ip получают у провайдера адрес, а он обязан знать его, и не важно как его сеть устроена. То что, где-то на домах не висят номера, не значит, что их у них нет, и кто нужно будет их знать, а провайдер вряд ли будет рисковать подключая кого-либо без адреса.
    WiFi имеет ограниченный радиус действия, прошерстить соседей не составит труда и вряд ли они успеют/догадаются поменять свой адрес wifi.
    И это в рядовой ситуации, без особых сложностей.
    Написано
  • Расскажите про настройки redis timeout и ошибку подключения к redis?

    @Vitsliputsli
    Александр Панков, если понятно, то что тогда непонятно? Это отвечает почти на все ваши вопросы:
    1) Как получаются эти клиенты, я думал что на каждую джобу будет свой плодится, а нет, а как тогда, как оно с php-fpm работает?

    Весь смысл persistent connections в том, чтобы не плодить соединения. Скорее всего каждый процесс php-fpm использует только 1 соединение, как именно, тут уже читайте доку по predis, если интересно.

    2) Нормально это вообще, что timeouts 0? мне кажется нет

    Очевидно, что да, если у вас соединение постоянное.

    3) Почему ошибка вообще возникала? если логически подумать, то php-fpm стучался к редису и открывал соединение, получал данные и джоба успешно делала свои дела, спустя 300сек ЭТОТ ЖЕ pid php-fpm стучался в редис для очердной задачи, а соединение уже было закрыто и не мог достучатся, фейлился, так выходит? а что же тогда новое соединение не открыть, зачем старое юзать... (поэтому в эксперименте выше всегда 5 клиентов, когда джобов 50+ в моменте, тк юзаются старые подключения, верно мыслю?)

    Верно. Почему не открыть новое? Потому что рассчитывают что таймаут будет установлен в 0. Зачем прятать ошибку и неявно замедлять работу? Если вам хочется, вы можете сделать реконнект сами явно.

    4) Какое вообще правильно решение в этой ситуации? (да, я понимаю, что многого не понимаю, конкретно как оно там под капотом устроено, вот и прошу объяснить)

    Правильное решение зависит от задачи и цели которой хотим достичь. Возможно, для вас правильным решением будет не использовать predis, т.к. он вам скорее всего не нужен.
    Написано
  • Расскажите про настройки redis timeout и ошибку подключения к redis?

    @Vitsliputsli
    Александр Панков, прочитать доку по predis.
    Например, если открыть FAQ, то один из первых вопросов:

    Does Predis support UNIX domain sockets and persistent connections?
    Yes. Obviously persistent connections actually work only when using PHP configured as a persistent process reused by the web server (see PHP-FPM).
    Написано
  • Расскажите про настройки redis timeout и ошибку подключения к redis?

    @Vitsliputsli
    Скорее всего, predis переиспользует открытые соединения, соответственно, если redis по таймауту будет закрывать простаивающие, predis в какие-то моменты будет читать из закрытого соединения.
    Написано