169 похожих чатов

Добрый день коллеги! Подскажите какое решение лучше всего сделать обработку

контактов в БД пакетно, по очереди, в многопотоке. Какие есть бест практик решения? У меня одна БД mysql и несколько серверов php5 которые обращаются к БД. Выборка по часовому поясу

3 ответов

22 просмотра

Вопрос требует конкретизации. Пока это сферический конь в вакууме

Py- Автор вопроса
Slava Rozhnev SQLtest.online https://phpize.online
Вопрос требует конкретизации. Пока это сферический...

Нужно вытаскивать из БД контакты пачками условно по 100, помечать что они в обработке, обрабатывать (по мере обработки, тут же помечать контакты что обработаны) и забирать следующую пачку. Проблема нарисовалась когда я попытался с двух серверов брать пачками, первый сервер не всегда успевал пометить "в обработке" из-за этого второй сервер иногда забирал те что уже в обработке.

Py
Нужно вытаскивать из БД контакты пачками условно п...

если вы уж ступили на опасную дорожку реализации очередей на БД, а не через сервер очередей, то надо понимать, что для реализации очереди необходимы какие-то примитивы синхронизации, позволяющее наше многопоточное приложение избавить от гонки состояний - ситуации, когда кто-то что-то не успел обновить. лично я реализовываю очереди на БД так: воркер (процесс, делающий работу - берущий из очереди что надо сделать и складывающий куда-нибудь результат) идёт по такому алгоритму: - берёт какой-нибудь айдишник worder_id - делает выборку записей из таблицы с условием status=fresh, в транзации с SELECT .. FOR UPDATE. Это блокирует строки пессиместично - другие воркеры в это же время выбирающие строки будут ждать. - обновляет выбранные строки, ставя им status=working, worder_id=123, taken_at=NOW() - завершает транзакцию всё, после этого никакой другой воркер не возьмет эти строки, так как они больше не подходят под условие (если после транзакции) или они заблокированы (во время транзакции). теперь можно выполнять работу и обновлять строки. я обычно делаю чтобы воркеры брали строки по одной или небольшими партиями. а также слежу за временем выполнения скрипта и "отпускаю" строки если скрипт не укладывается в ожидаемое время.

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта