Задать вопрос
  • Почему PHP не видит класс через namespace??

    @Vitsliputsli
    sherzad_90, у вас класс Article ссылающийся на класс ActiveRecordEntity, который нужно загрузить, объявлен в 4 строке, а автозагрузчик только в 6.
  • Самая простая конструкция с собственной областью видимости?

    @Vitsliputsli
    Василий Банников, все равно это будет функция, а блок кода со своим контекстом лишь синтаксический сахар. Да и логически ценность не очень понятна, если этот блок независим, вынесение его в отдельную функцию только улучшит читаемость текста. А если в блоке только одна переменная, проще ее создать там же и там же уничтожить.
    Поэтому и цель автора мне не понятна.
  • Что эффективнее использовать: SELECT COUNT или rowsCount() (PDO)?

    @Vitsliputsli
    Как уже верно указано, rowsCount в PDO это совсем про иное. Просто в коде посчитайте кол-во строк и все.
    Если же говорить про mysql_num_rows из статьи, то там тоже странные вещи написаны. mysql_num_rows считает кол-во строк в уже полученном наборе, т.е. СУБД уже обработала запрос и вернула результат. По сути, вы с тем же успехом можете и сами посчитать сколько строк в полученном результате.
  • Как понять/выучить ООП Python?

    @Vitsliputsli
    DollyPapper, к примеру, нет модификаторов доступа и нет интерфейсов.
  • Какую область программирования выбрать PHP или Java?

    @Vitsliputsli
    Just Me, ну да, статистика это же истина в последней инстанции.
    Кстати, там SQL обогнал PHP, давайте использовать SQL везде. А VisualBasic обогнал JavaScript, тоже надо менять.
    Уже много лет слышны эти разговоры про "умирающие" языки, идущие на убыль по статистике, а они до сих пор широко используются, и даже в этой статистике в топе.
  • Архитектура сервиса обработки задач [PHP]?

    @Vitsliputsli
    Дмитрий,
    1. В принципе оно правильно, только к вопросу автора не имеет отношения. В который раз пишу, автор правильно определил проблему и задал конкретный вопрос про параллелизм. Вы же ему ответили как и сейчас на все что угодно, только не на вопрос. И на это я указал тогда, и сейчас.
    2. Это прям самонадеянно, жизнь не только этот форум. И я предлагал выше, остановиться на том, что пришли к единому решению, но вам захотелось докопаться кто был неправ.
  • Архитектура сервиса обработки задач [PHP]?

    @Vitsliputsli
    Дмитрий, если просто согласиться нельзя, а нужно потыкать, кто не прав. То вот ваш комментарий:

    вы можете запускать внешний скрипт в бэкграунде - делов то.

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

    Здесь нет ни слова о параллелелизме, а все упоминания воркера в единственном числе. Как решение здесь предлагается очередь и лучше rabbitmq. Собственно это я и оспаривал, что проблема автора не в очереди (она у него уже есть, разве что может нужно добавить защиту от гонки), а в отсутствии параллелизма. Именно об этом, я и написал:
    Самое простое решение, как уже указали, использовать несколько воркеров, столько, сколько будет оптимальным. Для этого проще всего запускать их в разных процессах, чем использовать потоки или подключать асинхронность.

    А далее вы ввели зачем то менеджер процессов и с ним спорили, а я в каждом ответе писал, что это не нужно и все более подробнее описывал простую архитектуру с несколькими процессами.
    Может вы это и подразумевали, но в тексте этого нет.
  • Как увеличить количество соединений к socket server?

    @Vitsliputsli
    проблема в том, что количество соединений может быть только 255

    Какой текст ошибки на клиенте и сервере, когда идет 256 соединение?
  • Архитектура сервиса обработки задач [PHP]?

    @Vitsliputsli
    Дмитрий, "демон + очередь" у автора уже есть, но 1 демон не вытягивает по скорости. Отсюда собственно и вопрос автора о параллелизме, который он хотел решить потоками, а ему предложили процессами. Т.к. решать это потоками или асинхронностью будет гораздо сложнее и вряд ли выигрышнее. Собственно об этом я и написал в первом комментарии: "Самое простое решение, как уже указали, использовать несколько воркеров, столько, сколько будет оптимальным. Для этого проще всего запускать их в разных процессах, чем использовать потоки или подключать асинхронность."
    Если нет возражений по поводу этого решения, то значит мы друг друга недопоняли и спорим не о том.
  • Архитектура сервиса обработки задач [PHP]?

    @Vitsliputsli
    Дмитрий, вы описываете более сложную архитектуру, здесь достаточно простой.
    Очередь - брокер сообщений или просто таблица в БД.
    Воркер - скрипт работающий демоном. При запуске он подключается к Очереди, затем переходит в бесконечный цикл. В каждой итерации, забирает задание из Очереди, затем выполняет его, затем рапортует в Очередь, что это задание завершено. И заново тоже самое.
    При необходимости можно запустить еще один воркер, и еще, и еще... Они независимы и не требуют специального управления. Это очень простая схема и не требуются ни потоки, ни асинхронность.
  • Архитектура сервиса обработки задач [PHP]?

    @Vitsliputsli
    Дмитрий, я не завлял, что брокер сообщений это чтото плохое и не нужное. Но, вопрос совсем в другом, хоть с брокером, хоть без, автору нужен параллелизм обработчиков. Да, надо будет управлять воркерами, но, как правильно заметил автор, брокер сообщений ему здесь никак не поможет, т.к. задания будет делать не брокер.
    К слову об управлении воркерами: их не нужно постоянно менять или создавать динамически, достаточно запустить их определенное кол-во с запасом, т.е. там вообще не нужен никакой "манагер процессов". А если уж нагрузка измениться в разы, то накинуть еще. Мониторить нужно только очередь. Железо тоже, конечно, надо мониторить, но это и так надо делать без всяких воркеров. Но, все это, опять же, надо будет делать в любом случае и без разницы есть брокер или нет.
  • Строка из БД как условие сравнения в if?

    @Vitsliputsli
    GeKskill, вполне возможно, что достаточно хранить 2 числа без знаков.
  • Как исправить синтаксическую ошибку в команде SQL?

    @Vitsliputsli
    Андрей Фомин, к слову, посмотрите чем отличается utf8 от utf8mb4, вполне возможно вам нужна именно utf8mb4
  • Архитектура сервиса обработки задач [PHP]?

    @Vitsliputsli
    Дмитрий, со стабильностью у php нет никаких проблем. Да и, правильно организованная очередь в БД работает также хорошо, как и при использовании брокера сообщений. Проблема у автора в том, что единственный воркер получив задание обрабатывает его долго, та же отправка email процесс не быстрый, все время пока воркер ждет ответ при обработке задания новых он не берет. Соответственно те же проблемы будут и с брокером очередей, воркер один, и время работы будет очень большим.
    Самое простое решение, как уже указали, использовать несколько воркеров, столько, сколько будет оптимальным. Для этого проще всего запускать их в разных процессах, чем использовать потоки или подключать асинхронность.
  • Как организовать алгоритм поиска по массиву ключевых слов?

    @Vitsliputsli
    Inajaf, готового нет, так как все зависит от задачи. Выше описано несколько алгоритмов и они будут давать разный результат. Если выберите расстояние Левенштейна, то учтите, что при сравнении придется накладывать эту функцию на каждую пару сравниваемое-образец. Т.е. это фулскан таблицы словаря, в зависимости от размера словаря и необходимой скорости ответа может и не подойти. Как вариант дерево Буркхарда-Келлера, но оно эффективно при получении одного ответа, при желании получить несколько, скорость работы будет деградировать очень сильно.
    Примерно также с трехграмным поиском.
    Фонетический анализ проще, мы в словаре можем хранить сформированный код и поиск будет по нему, здесь уже будут работать индексы и скорость будет высокой. Проблема здесь в том, что различные функции могут дать разные и очень неожиданные результаты. И дело не только в том, что они захватят лишнее, они могут не выдать очень похожие результаты.
    Что касается синонимов в словаре, то группируете их (какое-нибудь поле group_id) и при совпадении одного слова выводите все слова группы.
    Все очень зависит от ваших требований, быть может будет достаточно сравнения по расстоянию Левенштейна с определенным порогом чувствительности, как написал mayton2019.
  • Как организовать алгоритм поиска по массиву ключевых слов?

    @Vitsliputsli
    mayton2019, да, вы правы, для задач автора вполне может и подойти. Я рассматривал только с точки зрения задачи на более-менее точное совпадение.
  • Как ускорить webhook или последовательное выполнение одного php скрипта за другим?

    @Vitsliputsli
    Алексей, суть ответов в том, что вы кладете в очередь, а далее воркеры ее обрабатывают. Совсем не обязательно для этого подымать брокер сообщений. Вполне можно сделать очередь в БД.
  • Как организовать алгоритм поиска по массиву ключевых слов?

    @Vitsliputsli
    mayton2019, а ложно-положительные срабатывания? Если я задам порог чувтствительности 5, то Левенштейн и Бронштейн будут одним и тем же. Если брать относительную чувствительность, т.е. поделить на кол-во букв в слове, то
    Джон отличается от Джонатану на 125%
    Джонатану от Джон на 55%
    Левенштейн от Бронштейн на 55%
  • Как понять/выучить ООП Python?

    @Vitsliputsli
    Nazar Markelov, имеетя ввиду, что python ООП неполноценный язык, чтото решается в нем "вручную", что-то не решается вообще. Если хочется ООП, то python плохой выбор. Если выбран python, а ООП нужно как его составляющая, то не вопрос.
    Что такое ООП информации море. Как оперировать объектами в python тоже. Изучите синтаксис и пишите код, и смотрите как это делают другие (не в видосиках, а у спецов, например, в либах к языку). Понимание, что такое на самом деле ООП придет позже.
  • Как понять/выучить ООП Python?

    @Vitsliputsli
    ООП это в первую очередь оперирование объектами, главное понять что, объект это не просто набор функций как в процедурном подходе.
    И, все таки, не любой язык, python как раз не имеет модификаторов доступа и не только их.