| | <?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)); |
| | } |
| | } |
| | } |
| |
|