Как заставить моего работника попросить больше времени для работы на работе?
Я использую библиотеку pheanstalk.
Работа — это разбор файла, который в зависимости от файла может занять более 60 секунд, по умолчанию ttr.
while( $job = $pheanstalk->watch($tubeName)->reserve() ){
// get the job body
$parserExec = unserialize( $job->getData() );
// execute parser - will take more than 1 min most of the time
exec( $parserExec['command'] );
// rest of the stuff - delete job etc
}
Я новичок в очереди вещей, и я изучал примеры, которые я нашел в Интернете. Если я делаю это неправильно, пожалуйста, скажите. Я пытался получить задания и написать условное выражение на основе оставшегося времени, но не смог заставить его работать. Когда я использую функцию jobStats в pheanstalk, результатом является массив приватных объектов. Я хочу, чтобы скрипт дождался завершения exec, сколько бы времени это ни заняло.
У вас есть два варианта продлить время работы на работе. Первый вариант — установить собственное значение TTR, когда задание вставляется в очередь. По умолчанию это 1 минута, но вы можете установить это так, как вам нужно. Это, вероятно, ваш лучший вариант. Предполагая, что вы используете pheanstalk, чтобы создать работу, которую вы можете сделать
$pheanstalk->putInTube(tube, data, priority, delay, ttr)
or
$pheanstalk->put(data, priority, delay, ttr);
Ты можешь позвонить $pheanstalk->touch($job)
Это приведет к сбросу обратного отсчета на вашем TTR, но вы все равно останетесь, вы все равно будете ограничены установленным значением TTR, которое в вашем случае составляет 1 минуту.
Других решений пока нет …