����JFIF��x�x����'
Server IP : 78.140.185.180 / Your IP : 3.141.202.216 Web Server : LiteSpeed System : Linux cpanel13.v.fozzy.com 4.18.0-513.11.1.lve.el8.x86_64 #1 SMP Thu Jan 18 16:21:02 UTC 2024 x86_64 User : builderbox ( 1072) PHP Version : 7.3.33 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /home/builderbox/public_html/vendor/laravel/horizon/src/ |
Upload File : |
<?php namespace Laravel\Horizon; use Carbon\CarbonImmutable; use Closure; use Laravel\Horizon\Events\UnableToLaunchProcess; use Laravel\Horizon\Events\WorkerProcessRestarting; use Symfony\Component\Process\Exception\ExceptionInterface; class WorkerProcess { /** * The underlying Symfony process. * * @var \Symfony\Component\Process\Process */ public $process; /** * The output handler callback. * * @var \Closure */ public $output; /** * The time at which the cooldown period will be over. * * @var \Carbon\CarbonImmutable */ public $restartAgainAt; /** * Create a new worker process instance. * * @param \Symfony\Component\Process\Process $process * @return void */ public function __construct($process) { $this->process = $process; } /** * Start the process. * * @param \Closure $callback * @return $this */ public function start(Closure $callback) { $this->output = $callback; $this->cooldown(); $this->process->start($callback); return $this; } /** * Pause the worker process. * * @return void */ public function pause() { $this->sendSignal(SIGUSR2); } /** * Instruct the worker process to continue working. * * @return void */ public function continue() { $this->sendSignal(SIGCONT); } /** * Evaluate the current state of the process. * * @return void */ public function monitor() { if ($this->process->isRunning() || $this->coolingDown()) { return; } $this->restart(); } /** * Restart the process. * * @return void */ protected function restart() { if ($this->process->isStarted()) { event(new WorkerProcessRestarting($this)); } $this->start($this->output); } /** * Terminate the underlying process. * * @return void */ public function terminate() { $this->sendSignal(SIGTERM); } /** * Stop the underlying process. * * @return void */ public function stop() { if ($this->process->isRunning()) { $this->process->stop(); } } /** * Send a POSIX signal to the process. * * @param int $signal * @return void */ protected function sendSignal($signal) { try { $this->process->signal($signal); } catch (ExceptionInterface $e) { if ($this->process->isRunning()) { throw $e; } } } /** * Begin the cool-down period for the process. * * @return void */ protected function cooldown() { if ($this->coolingDown()) { return; } if ($this->restartAgainAt) { $this->restartAgainAt = ! $this->process->isRunning() ? CarbonImmutable::now()->addMinute() : null; if (! $this->process->isRunning()) { event(new UnableToLaunchProcess($this)); } } else { $this->restartAgainAt = CarbonImmutable::now()->addSecond(); } } /** * Determine if the process is cooling down from a failed restart. * * @return bool */ public function coolingDown() { return isset($this->restartAgainAt) && CarbonImmutable::now()->lt($this->restartAgainAt); } /** * Set the output handler. * * @param \Closure $callback * @return $this */ public function handleOutputUsing(Closure $callback) { $this->output = $callback; return $this; } /** * Pass on method calls to the underlying process. * * @param string $method * @param array $parameters * @return mixed */ public function __call($method, $parameters) { return $this->process->{$method}(...$parameters); } }