我有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支持