Size: a a a

Laravel Framework Russian Community

2020 August 04

D

DK in Laravel Framework Russian Community
вкинуть ещё железа и не париться?)
источник

А

Артём in Laravel Framework Russian Community
Victor
Ребята, подскажите как быть. Есть система, в которой некоторые операции выполняются по 20-60 секунд. Причем вызов таких задач достаточно частый в системе. Скажем так это основной функционал. Соответственно, что если пользователей будет много, то это даст хорошую нагрузку. Есть кейсы, что пока система думает пользователь может вернуться на шаг назад и еще раз запустить этот процесс.
Было решено заюзать очередь.
Но тут выплыл нюансик неприятный. Что если например 10 человек одновременно создадут задачи, то 10-й человек получит результат после того как остальные задачи выполнились. т.е. ждать ему нужно несколько минут.
Как правильно разруливать такой кейс? Паралелить очереди и рандомно закидывать задачу в одну из них?  Или какой то другой инструмент юзать? или железо наращивать? Как вы поступаете при таких кейсах.
А ты точно понял, как работают очереди?
источник

А

Артём in Laravel Framework Russian Community
Например, ту часть, где пишут про «зааускайье столько воркеров, сколько хотите»
источник

А

Артём in Laravel Framework Russian Community
Ну и первым делом обновиться до  РНР 7.4, если ещё нет
источник

А

Артём in Laravel Framework Russian Community
А потом искать баланс между железом и оптимизацией кода, если влокеры не влезают в имеющиеся ресурсы
источник

A

Arteshuk in Laravel Framework Russian Community
Victor
Ну там массивы перебирать большие по фильтрам и формировать из нихкомбинации
Дай угадаю, в фильтрах юзаются mb_ функции?
источник

V

Victor in Laravel Framework Russian Community
@Arteshuk нет. там нужно формировать группы из товаров, например, чтобы по цене было не более X.
источник

V

Victor in Laravel Framework Russian Community
группа была не дороже X
источник

A

Arteshuk in Laravel Framework Russian Community
Что ж там за массивы и чем они перебираются 20-60 секунд?
источник

К

Кана in Laravel Framework Russian Community
Victor
Ребята, подскажите как быть. Есть система, в которой некоторые операции выполняются по 20-60 секунд. Причем вызов таких задач достаточно частый в системе. Скажем так это основной функционал. Соответственно, что если пользователей будет много, то это даст хорошую нагрузку. Есть кейсы, что пока система думает пользователь может вернуться на шаг назад и еще раз запустить этот процесс.
Было решено заюзать очередь.
Но тут выплыл нюансик неприятный. Что если например 10 человек одновременно создадут задачи, то 10-й человек получит результат после того как остальные задачи выполнились. т.е. ждать ему нужно несколько минут.
Как правильно разруливать такой кейс? Паралелить очереди и рандомно закидывать задачу в одну из них?  Или какой то другой инструмент юзать? или железо наращивать? Как вы поступаете при таких кейсах.
Так можно параллельно запустить несколько процессов очередей, так что если 5 процессов, то 10 ому придется ждать примерно пока 1 закончится до него
источник

К

Кана in Laravel Framework Russian Community
И вообще нельзя результат на почту отправлять?
источник

V

Victor in Laravel Framework Russian Community
@Arteshuk  150к товаров. нужно чтобы поместились товары по определенным параметрам. напирмер стоимость группы не более 1000, количество товаров в группе 3. вот и перебераются, пока не найдутся совпадения
источник

A

Arteshuk in Laravel Framework Russian Community
Victor
@Arteshuk  150к товаров. нужно чтобы поместились товары по определенным параметрам. напирмер стоимость группы не более 1000, количество товаров в группе 3. вот и перебераются, пока не найдутся совпадения
Это не может столько времени занимать. У меня 4 ляма товаров
источник

V

Victor in Laravel Framework Russian Community
так а задача у вас есть такая?
источник

V

Victor in Laravel Framework Russian Community
формировать группы?
источник

V

Victor in Laravel Framework Russian Community
+ записать в базу группы эти нужно
источник

A

Arteshuk in Laravel Framework Russian Community
Нет такой задачи, ну если допустим нужно три товара не более тысячи, ну 0.01 сек
источник

V

Victor in Laravel Framework Russian Community
они потом выводятся с пагинацией
источник

V

Victor in Laravel Framework Russian Community
но и разбежка цены не более 20%
источник

A

Arteshuk in Laravel Framework Russian Community
Да с чем угодно, не может 150 тысяч элементов массива перебираться столько времени
источник