| 1 | <?php  | 
            ||
| 8 | class SynchronousProcess implements Runnable  | 
            ||
| 9 | { | 
            ||
| 10 | protected $id;  | 
            ||
| 11 | |||
| 12 | protected $task;  | 
            ||
| 13 | |||
| 14 | protected $output;  | 
            ||
| 15 | protected $errorOutput;  | 
            ||
| 16 | protected $executionTime;  | 
            ||
| 17 | |||
| 18 | use ProcessCallbacks;  | 
            ||
| 19 | |||
| 20 | public function __construct(callable $task, int $id)  | 
            ||
| 25 | |||
| 26 | public static function create(callable $task, int $id): self  | 
            ||
| 30 | |||
| 31 | public function getId(): int  | 
            ||
| 35 | |||
| 36 | public function getPid(): ?int  | 
            ||
| 40 | |||
| 41 | public function start()  | 
            ||
| 42 |     { | 
            ||
| 43 | $startTime = microtime(true);  | 
            ||
| 44 | |||
| 45 |         try { | 
            ||
| 46 | $this->output = $this->task instanceof Task  | 
            ||
| 47 | ? $this->task->run()  | 
            ||
| 48 | : call_user_func($this->task);  | 
            ||
| 49 |         } catch (Throwable $throwable) { | 
            ||
| 50 | $this->errorOutput = $throwable;  | 
            ||
| 51 |         } finally { | 
            ||
| 52 | $this->executionTime = microtime(true) - $startTime;  | 
            ||
| 53 | }  | 
            ||
| 54 | }  | 
            ||
| 55 | |||
| 56 | public function stop()  | 
            ||
| 59 | |||
| 60 |     public function seekOutput() { | 
            ||
| 63 | |||
| 64 | public function getOutput()  | 
            ||
| 68 | |||
| 69 | public function getErrorOutput()  | 
            ||
| 73 | |||
| 74 | public function getCurrentExecutionTime(): float  | 
            ||
| 78 | |||
| 79 | protected function resolveErrorOutput(): Throwable  | 
            ||
| 83 | }  | 
            ||
| 84 |