2016-06-20 2 views
0

Как я могу сделать очередь laravel: работать, чтобы обрабатывать задания как можно больше? (с redis или beanstalkd)
По умолчанию он обрабатывает 1 задание одновременно, но мне нужно, чтобы он запускал несколько заданий одновременно, пока у ЦП не было свободного места.
Любая помощь приветствуется.Запустить laravel queue asyncronously

ответ

1

Это зависит от того, как вы работаете с работником (-ами), и как можно увеличить количество рабочих, которые начинают получать предметы из очереди и запускать их.

Если вы используете supervisord для запуска рабочих, это может быть так же просто, как увеличение numprocs в конфигурации.

Обычно вы не устанавливали его на очень большое число, поскольку попытка запустить слишком много процессов одновременно может оказаться серьезной проблемой, когда в памяти заканчивается память или процессор.

+0

Спасибо, но установка номера для запущенных процессов не является эффективным. Если мы установим большое число, это может вызвать проблему (как вы сказали), и если установить небольшое число, возможно, что мы не используем максимальные возможности процессора. Являются ли все системы очередности сообщений такими? Нужно ли устанавливать номер процесса вручную? –

0

Посмотрите на этого слушателя. Лучше всего, что он запускает рабочих в зависимости от того, сколько у вас загрузок в очереди, и его очень легко настроить. Поэтому, когда вы требуете гораздо большего числа рабочих, поскольку они автоматически создают нерегулярных работников, новые будут решать эту задачу ... Если нет необходимости в большем количестве рабочих, так как ранее порожденные будут убиты, будет минимальное потребление только нескольких ресурсов с вашего ПК. Вы можете настраиваться в зависимости от ваших потребностей и возможностей сервера.

https://github.com/smaugho/TunedQueue