Я так понимаю ему ничего не пишется, а pull делать религия не позволяет
kafka - вещь узкоспециальная, а вот kubernetes точно лишним не будет
Работает нормально, но не очень хорошо делать активный цикл одижания.
$min = min($foo); // перебор всего массива
$max = max($foo); // перебор всего массива
$fullRange = range($min, $max); // создание нового массива размером с первоначальный
$missed = array_diff($fullRange, $foo); // вычисление расхождения массивов
$sum = array_sum($missed); // перебор всего массива
$n = max($foo); // перебор всего массива, а если массив отсортирован, то и этого не нужно
$asum = ((1+$n)*$n)/2; // простые вычисления
echo $asum-array_sum($foo); // перебор всего массива
Крон запускается за счет посещения
В моём случае остановка на 5 минут - не страшно
опять же, я прикинул - в моём случае это нормально. Было бы плохо, если бы задания прилетали в очередь достаточно плотно, но в моей реальности этого нет.
сообщить брокеру, что задача готова, затем увеличить свой счётчик
если сумма счётчиков не меняется в течение какого-то времени, то спросить у брокера количество задач в очереди
За это отвечает брокер - если по таймауту задача не подтверждена, она автоматически возвращается в очередь. Это была одна из причин, почему я выбрал beanstalk, а не Redis Pub/Sub ( у Redis сейчас заявлен новый механизм, Streams , но мне он показался сложнее )
Этот момент мне неясен. В моём представлении, это так:
1) есть некое оперативное хранилище ( например, Redis )
2) Паблишер туда пишет: "я поставил N заданий". И закончил работу.
3) Каждый Воркер в то же хранилище пишет свой инкрементный счётчик, сколько заданий он сделал.
4) Менеджер работает параллельно воркерам и считает сумму их счётчиков. Как только сумма сошлась с числом от паблишера, все задания обработаны.
Так?
не буду дальше позориться и рассказывать устройство, и так вижу, что тут коряво вышло
Теперь вижу, что подход в целом неверный. Если я боюсь утечек памяти, надо было брать пример с Апача: Менеджер мониторит количество воркеров и запускает новые, если нужно, а воркер обрабатывает фиксированное число заданий ( тысячу, 10 тысяч ) и завершается. Если хочется принудельно завершить воркера, надо смотреть в сторону сигналов.
скидки на товары
А зачем верить на слово? Откройте журнал git по ветке и проверьте, что действительно происходило, где был merge, а где rebase, или вообще reset.
Если что, это делается так:
git reflog show dev