Changeset View
Changeset View
Standalone View
Standalone View
src/filesystem/PhutilProcessRef.php
- This file was added.
<?php | |||||
final class PhutilProcessRef | |||||
extends Phobject { | |||||
private $pid; | |||||
private $command; | |||||
private $isOverseer; | |||||
private $instance; | |||||
private $argv; | |||||
public function setPID($pid) { | |||||
$this->pid = $pid; | |||||
return $this; | |||||
} | |||||
public function getPID() { | |||||
return $this->pid; | |||||
} | |||||
public function getCommand() { | |||||
if (!$this->command) { | |||||
$this->command = phutil_string_cast(csprintf('%LR', $this->argv)); | |||||
} | |||||
return $this->command; | |||||
} | |||||
public function getIsOverseer() { | |||||
if ($this->isOverseer === null) { | |||||
$this->isOverseer = $this->getCommandMatch( | |||||
array( | |||||
array('phd-daemon'), | |||||
array('php', 'phd-daemon'), | |||||
)); | |||||
} | |||||
return $this->isOverseer; | |||||
} | |||||
public function setInstance($instance) { | |||||
$this->instance = $instance; | |||||
return $this; | |||||
} | |||||
public function getInstance() { | |||||
return $this->instance; | |||||
} | |||||
private function getCommandMatch(array $patterns) { | |||||
$argv = $this->getArgv(); | |||||
foreach ($patterns as $pattern) { | |||||
$pattern = array_values($pattern); | |||||
$is_match = true; | |||||
for ($ii = 0; $ii < count($pattern); $ii++) { | |||||
if (!isset($argv[$ii])) { | |||||
$is_match = false; | |||||
break; | |||||
} | |||||
if (basename($argv[$ii]) !== $pattern[$ii]) { | |||||
$is_match = false; | |||||
break; | |||||
} | |||||
} | |||||
if ($is_match) { | |||||
return true; | |||||
} | |||||
} | |||||
return false; | |||||
} | |||||
public function setArgv(array $argv) { | |||||
$this->argv = $argv; | |||||
return $this; | |||||
} | |||||
public function getArgv() { | |||||
return $this->argv; | |||||
} | |||||
} |