Работа с очередями позволяет распараллелить некоторые процессы и\или вынести особо время затратные задачи в очередь. В этой статье я раскажу, как изменить лимит времени на выполнение задачи (max_execution_time).
Общие принципы работы с yii2-queue я описывал ранее здесь.
Первая мысль, что мне пришла, когда я увидел сообщение об ошибке о завершении таска из-за временного лимита — конечно же, set_time_limit(0). Но на практике ничего не изменилось и я начал искать другое решение.
Оно оказалось достаточно простым и описаным в документации, но я его упустил из-за неочевидности названия ключа.
Итак, чтоб изменить время выполнения таска нужно при подключении компонента очереди указать параметр ttr равным желаемому кол-ву секунд.
'qSocialBoxAttracting' => [
'class' => \yii\queue\db\Queue::class,
'ttr' => 0, // <------- Указание времени работы таска.
'db' => 'db',
'tableName' => '{{%queue}}',
'channel' => 'sb-attracting',
'mutex' => \yii\mutex\MysqlMutex::class,
],
Свойство ttr как раз выполняет искомую функцию. Его значение равно количеству секунд, которые отведены на выполнение таска. Т.е. 300 — будет означать лимит в 5 минут. И самое главное, что 0 — означает отсутствие ограничений для особо длительных задач.
Вот и всё решение! Если остались вопросы по работе очередей и управлению ими — пишите в комментарии. Удачи!