Exemple #1
0
 /**
  * Register the worker timeout handler (PHP 7.1+).
  *
  * @param  \Illuminate\Contracts\Queue\Job|null  $job
  * @param  WorkerOptions  $options
  * @return void
  */
 protected function registerTimeoutHandler($job, WorkerOptions $options)
 {
     if (version_compare(PHP_VERSION, '7.1.0') < 0 || !extension_loaded('pcntl')) {
         return;
     }
     $timeout = $job && !is_null($job->timeout()) ? $job->timeout() : $options->timeout;
     pcntl_async_signals(true);
     pcntl_signal(SIGALRM, function () {
         $this->exceptions->report(new TimeoutException('A queue worker timed out while processing a job.'));
         exit(1);
     });
     pcntl_alarm($timeout + $options->sleep);
 }