| <?php |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
| namespace think\process\exception; |
|
|
| use think\Process; |
|
|
| class Timeout extends \RuntimeException |
| { |
|
|
| const TYPE_GENERAL = 1; |
| const TYPE_IDLE = 2; |
|
|
| private $process; |
| private $timeoutType; |
|
|
| public function __construct(Process $process, $timeoutType) |
| { |
| $this->process = $process; |
| $this->timeoutType = $timeoutType; |
|
|
| parent::__construct(sprintf('The process "%s" exceeded the timeout of %s seconds.', $process->getCommandLine(), $this->getExceededTimeout())); |
| } |
|
|
| public function getProcess() |
| { |
| return $this->process; |
| } |
|
|
| public function isGeneralTimeout() |
| { |
| return $this->timeoutType === self::TYPE_GENERAL; |
| } |
|
|
| public function isIdleTimeout() |
| { |
| return $this->timeoutType === self::TYPE_IDLE; |
| } |
|
|
| public function getExceededTimeout() |
| { |
| switch ($this->timeoutType) { |
| case self::TYPE_GENERAL: |
| return $this->process->getTimeout(); |
|
|
| case self::TYPE_IDLE: |
| return $this->process->getIdleTimeout(); |
|
|
| default: |
| throw new \LogicException(sprintf('Unknown timeout type "%d".', $this->timeoutType)); |
| } |
| } |
| } |
|
|