如何在Laravel队列中捕获超时异常

时间:2019-04-26 12:25:24

标签: laravel exception queue

我有Laravel数据库驱动程序队列,并在docker中受监管。

我知道队列可以异常关闭

  

进程“'/ usr / local / bin / php''artisan'queue:work''--once --queue ='default'--delay = 0 --memory = 128 --sleep = 3- -tries = 3“超过了60秒的超时。 {“ exception”:“ [object](Symfony \ Component \ Process \ Exception \ ProcessTimedOutException(code:0):进程\”'/ usr / local / bin / php''artisan'queue:work''--once --queue =“默认” --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
        }

}

我也无法通过在job变量内设置超时来终止工作 启用了php.ini中的pcntl支持

0 个答案:

没有答案