Задать вопрос
  • Регулярное выражение поиск по группам или нет?

    Jimm24, решение от dodo512 прикольное, но для более сложных случаев посмотрите выдачу про "regex незахватывающие группы"
  • Как понять, что все сообщения в очереди обработаны?

    Mausglov
    @Mausglov Автор вопроса
    Что подразумевается под агрегатными задачами?

    скидки на товары. В каждой скидке свой перечень товаров, и если цены на какие-то товары из перечня поменялись, то скидку надо "пересчитать". ( сходу не скажу, почему). Из дизайна видно, что расточительно пересчитывать скидку после изменения каждого товара, который в неё входит; лучше дождаться всех изменений по товарам, и только после этого пересчитывать скидки.
  • Как понять, что все сообщения в очереди обработаны?

    Mausglov
    @Mausglov Автор вопроса
    Vitsliputsli,
    Также, из-за того что эти задания не предназначены определенному воркеру, то один воркер может обработать 2 задания-стопера

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

    Mausglov
    @Mausglov Автор вопроса
    Vitsliputsli,
    В варианте с заданием-стопером вы создаете зависимость между брокером и воркерами, брокер должен всегда точно знать сколько работает воркеров.

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

    Теперь вижу, что подход в целом неверный. Если я боюсь утечек памяти, надо было брать пример с Апача: Менеджер мониторит количество воркеров и запускает новые, если нужно, а воркер обрабатывает фиксированное число заданий ( тысячу, 10 тысяч ) и завершается. Если хочется принудельно завершить воркера, надо смотреть в сторону сигналов.
  • Как понять, что все сообщения в очереди обработаны?

    Mausglov
    @Mausglov Автор вопроса
    Vitsliputsli,
    Или, например, некий менеджер, который будет собирать информацию с воркеров

    Этот момент мне неясен. В моём представлении, это так:
    1) есть некое оперативное хранилище ( например, Redis )
    2) Паблишер туда пишет: "я поставил N заданий". И закончил работу.
    3) Каждый Воркер в то же хранилище пишет свой инкрементный счётчик, сколько заданий он сделал.
    4) Менеджер работает параллельно воркерам и считает сумму их счётчиков. Как только сумма сошлась с числом от паблишера, все задания обработаны.
    Так?
  • Переписать грамотнее и с помощью Laravel реально ли и каким лучше образом?

    Adamos, классический набор "title, meta description,h1, текст" никуда не делся. Микроразметка тоже важна. Мой опыт взаимодействия с сайтами на реактивных фреймворках таков:
    Во-первых, их было мало, по пальцам одной руки можно сосчитать.
    Во-вторых, внутри это выглядело так:
    • минимальная разметка head, одинаковая для всех страниц,
    • пустой body,
    • запуск приложения.

    Один из проектов потом точно смог в SSR, но страница оказалась забита то ли чудовищным количеством data-атрибутов, то ли монструозным Javascript - не помню подробностей, но показатели PageSpeed упали до плинтуса.
    Возможно, сейчас подобные проекты ещё на старте переводятся в режим "только консультации", поэтому я о них ничего и не слышу. А может, им неинтересно SEO.
  • Переписать грамотнее и с помощью Laravel реально ли и каким лучше образом?

    Adamos, я нигде не предлагал начинать с PHP 4 , посмотрите ещё раз.
    Ни одному сайту из сделанных мной за последние годы никакая SEO, за отсутствием публичной части, просто не требовалась.

    Это Ваш личный опыт. Мой полностью противоположный - магазины и сайты услуг.
  • Как подключиться из PHP к memcached с использованием socket?

    Евгений Николаев, а попробуйте PHP кодом посмотреть содержимое. /tmp Если там пусто - то это ещё может быть влияение privateTmp в systemd
  • Можно ли создать базу данных на одной таблице?

    Вы немножко промахнулись с датами :) JSON только появился в 2006-м. Первый релиз MongoDB был в 2009-м. Поддержка (довольно сырая) этого типа в MySQL появилась в 2015-м.

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

    Adamos,
    И после всей этой небыстрой эволюции сунуться в реальный мир и обнаружить, что динозавры к этому времени уже вымерли

    На то, что я предложил при выборе направления "бэкенд", и в том формате освоения, который я предложил, нужна неделя. Динозавры так быстро не вымирают :)
    А к тем, кто делает всё на реактивных фреймворках, приходит заказчик с SEO оптимизатором и заставляют переделывать. И только особо изворотливые могут убедить заказчика потратиться на отдельный сервер ради SSR .
    Я не сторонник обучения "давайте бросим в воду, есть шанс, что выплывет". Очень многие не выплывают, и собеседовать их - сплошное разочарование. Предпочитаю закладывать хороший фундамент, и только потом двигаться дальше.
  • Переписать грамотнее и с помощью Laravel реально ли и каким лучше образом?

    EpIvIaK,
    Говорили, что смешивать <?php?> html <?php?> html плохо

    Плохо, когда у Вас там (в php) логика. Например: на странице блок новостей, и когда разметка дошла до этого блока, Вы ставите открывающий php тег, по куче условий строите запрос к БД, достаёте новости, к новостям миниатюры... И через 1-2 страницы кода продолжаете строить разметку, как ни в чём не бывало. ( а посторонний человек уже забыл, где мы и для чего).
    Когда PHP используется как шаблонизатор - это не очень удобно, но нормально. Посмотрите на Smarty, один из старейших PHP шаблонизаторов ( до сих пор жив, кстати). Там очень многое выглядит как замена шила на мыло.
  • Переписать грамотнее и с помощью Laravel реально ли и каким лучше образом?

    EpIvIaK,
    Я правильно понимаю, что тут сводится речь к тому чтоб в отдельном файле js держать
    это? Т.е об этом речь?

    Нет. Разделение HTML и JS в разные файлы хорошо, но это другое. Название функции validate заставляет предположить, что Вы там проверяете пользовательский ввод. Аргументов функция не принимает ( по сигнатуре). Что Вы будете делать, когда появится ещё одна форма на странице, с совершенно другим содержимым? Или, более наглядно: допустим, у Вас уже есть эта другая форма на другой странице, и тоже есть функция validate() , но с другими проверками. Вы решили эту часть с формой продублировать на первую страницу. Понимаете, что произойдёт?

    Короче: если функция нужна только форме, зачем её пихать в глобальную область видимости ( == делать полем объекта window) ? Переделайте в function expression и засуньте в анонимный обработчик для события DOM Ready. Обработчик замкнёт контекст, и будет хорошо.
  • Переписать грамотнее и с помощью Laravel реально ли и каким лучше образом?

    мне кажется, Вам ещё далеко до Laravel. Сначала стоит разделить в голове, что html+css+js - это фронтенд, а php - это бэкенд, де совершенно независимых области.
    Потом решить, на чём Вы хотите специализироваться. Если фронтенд - то забудьте пока по PHP и качайте только его. Даже по показанному видно, что уровень у Вас ещё очень низкий.
    <html lang="en">
    Сомневаюсь, что Вы делали это для англоязычной аудитории.
    <script>function validate(){...}</script>
    Вы понимаете, что тут захламляете глобальную область видимости? Уверен, что нет. Изучите, что такое модульность и замыкания.
    Предполагаю, что "за кадром" осталось ещё много подобного. Вы пока действуете по принципу "monkey see, monkey do" - это хорошо для получения хоть какого-то начального результата, но теперь нужно понять смысл написанного.
    После этого я предлагаю Вам посмотреть на webpack и шаблонизатор Pug.
    Если же хотите качать бэкенд - то Pug и webpack можно отложить. Вместо этого перечитайте справочник по PHP . ( А может, Вы это уже делали недавно? Тогда поздравляю, можно идти дальше ). Например, вот такое:
    echo <<<REG
    на мой взгляд, довольно бессмысленно. Была бы тут запись в переменную, тогда да. Проще было поставить закрывающий php-тег "?>" , а потом открыть в нужном месте.
    Затем почитайте про паттерны проектирования ( они же - шаблоны проектирования ). Заучивать их сейчас не нужно, достаточно просмотреть и понять, что это. ( На том же сайте стоит прочитать раздел "Рефакторинг" , полезно).
    Затем погуглить "PHP шаблонизаторы". Понять, что это такое.
    Почитайте, что такое "Model-View-Controller" (MVC)
    А уже после этого приступать к Laravel - так как это MVC фреймворк, построенный с ипользованием паттернов проектирования, и который в своём составе содержит шаблонизатор Blade .
  • Из-за чего может быть ошибка Script @php artisan package:discover --ansi handling the post-autoload-dump event returned with error code 1?

    Ошибка ( с точки зрения интерпретатора ) действительно написана прямым текстом. Если бы не дурацкая картинка, я бы её процитировал.
    Ну а чтобы понять, почему она произошла, достаточно базовых знаний языка, правда
  • Какая может быть формула для решения этой задачи?

    мне кажется, вопрошавший просто хотел услышать "перевести число обратно в двоичную форму и проверить позицию нужного бита". У меня есть "академично-математично" выглядящая идея, но это извращение; если бы мне кандидат такое предложил ( не как шутку, а на полном серьёзе), я бы его точно не взял.
  • Почему данные входящего запроса не сохраняются в файл?

    danilapon, напишите простенький post-merge хук с chown . Хуки лежат в .git/hooks/ . У меня тоже есть площадка, где ssh под одним пользователем, а веб-сервер - под www-data . Я не парюсь и делаю рекурсивный chown на весь DOC_ROOT. Конечно, пулл теперь заметно медленнее, но это не критично.
  • Как вывести рандомно определенное количество пользователей битрикс?

    redesupar, вероятно, оно вообще не поддерживает RAND. О, стоило правильно поставить вопрос, и сразу нашёлся готовый ответ:
    Есть уже готовый велосипед для случайной выборки из таблицы пользователей?
  • Почему сервер MySQL закрывает соединение?

    Вы что-то странное пишете. Какой смысл разработчикам вводить эти параметры ( wait_timeout , interactive_timeout ) , если они не собираются поддерживать заявленное поведение?
  • Как вывести рандомно определенное количество пользователей битрикс?

    навскидку, попробуйте:
    <?php
    $by = 'RAND';
    $order = 'ASC';
    $rsUsers = CUser::GetList( $by, $order, $filter); // выбираем пользователей