/** * Execute the console command. * * @return mixed */ public function fire() { $queue = $this->argument('queue'); if (empty($queue)) { $queue = 'default'; } $pid = getmypid(); Log::info("New Worker Start, pid {$pid}, queue {$queue}"); $handler = function ($signal) { if ($signal = SIGINT) { echo "You can't stop Worker here\n"; } elseif ($signal = SIGHUP) { Log::info("RECV SIGHUP"); } }; pcntl_signal(SIGINT, $handler); pcntl_signal(SIGHUP, $handler); // php-fpm stop 的时会发送这个信号 $queue = new ElemeJobQueue($queue); $supervisor = new Supervisor($queue, $pid); $worker = $supervisor->getWorker(); $worker->listen(); }