У меня есть очередь драйвера базы данных Laravel и супервизор в Docker.
Я знаю, что очередь может отключиться за исключением:
Процесс "'/ usr / local / bin / php'' ремесленник 'queue: work' '--once --queue =' default '--delay = 0 --memory = 128 --sleep = 3 --tries = 3 "превысил тайм-аут 60 секунд.{"исключение": "[объект] (Symfony \ Component \ Process \ Exception \ ProcessTimedOutException (код: 0): процесс \" '/ usr / local / bin / php' 'ремесленник' очередь: работа '' --once--queue = 'default' --delay = 0 --memory = 128 --sleep = 3 --tries = 3 \ "превысил тайм-аут 60 секунд. В /app/vendor/symfony/process/Process.php:1236)
Как я могу поймать исключение в моем коде, когда я помещаю свою очередь в контроллер, не давая отключить весь сервер с таймаутом Getaway
Queue::pushOn('default', new Adservice());
[program:laravel-worker]
command=php /app/artisan queue:listen database --queue=default --tries=1
autostart=true
autorestart=true
user=root
numprocs=1
priority=1
redirect_stderr=true
stdout_logfile=/app/storage/logs/supervisor.log
// Adservice
public function handle(){
$this->timeout=3;
$time_start = microtime(true);
try{
usleep(100);
$time_end = microtime(true);
$time = $time_end - $time_start;
dump($time);//13
}catch(\Exception $e){
Log::error('GetCsvFromSftp.php: '.date("Y-m-d H:i:s").$e);
throw $e; // rethrow to make job fail
}
}
Также я не могу убить задание, установив тайм-аут внутри переменной pcntl поддержки задания в php.ini включён