Fixup command argument

This commit is contained in:
Philipp Holzer 2021-10-31 14:31:02 +01:00
parent 38f70cc55a
commit 7637ae1dcc
Signed by: nupplaPhil
GPG Key ID: 24A7501396EB5432
4 changed files with 29 additions and 22 deletions

View File

@ -846,7 +846,7 @@ class Worker
private static function activeWorkers()
{
$stamp = (float)microtime(true);
$count = DBA::count('process', ['command' => 'Worker.php']);
$count = DI::process()->countCommand('Worker.php');
self::$db_duration += (microtime(true) - $stamp);
self::$db_duration_count += (microtime(true) - $stamp);
return $count;

View File

@ -30,17 +30,4 @@ class Process extends BaseEntity
$this->command = $command;
$this->created = $created;
}
/**
* Returns a new Process with the given PID
*
* @param int $pid
*
* @return $this
* @throws \Exception
*/
public function withPid(int $pid): Process
{
return new static($pid, $this->command, new DateTime('now', new \DateTimeZone('URC')));
}
}

View File

@ -20,16 +20,13 @@ class Process extends BaseFactory implements ICanCreateFromTableRow
/**
* Creates a new process entry for a given PID
*
* @param int $pid
* @param int $pid
* @param string $command
*
* @return Entity\Process
*/
public function create(int $pid): Entity\Process
public function create(int $pid, string $command): Entity\Process
{
$trace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 1);
$command = basename($trace[0]['file']);
return $this->createFromTableRow([
'pid' => $pid,
'command' => $command,

View File

@ -59,11 +59,16 @@ class Process extends BaseRepository
try {
$this->db->transaction();
$newProcess = $this->factory->create($pid);
$trace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS);
$last = $trace[count($trace) - 1];
$command = strtolower(basename($last['file']));
$newProcess = $this->factory->create($pid, $command);
if (!$this->db->exists('process', ['pid' => $pid])) {
if (!$this->db->insert(static::$table_name, [
'pid' => $newProcess->pid,
'pid' => $newProcess->pid,
'command' => $newProcess->command,
'created' => $newProcess->created->format(DateTimeFormat::MYSQL)
])) {
@ -115,4 +120,22 @@ class Process extends BaseRepository
$this->db->commit();
}
}
/**
* Returns the number of processes with a given command
*
* @param string $command
*
* @return int Number of processes
*
* @throws ProcessPersistenceException
*/
public function countCommand(string $command): int
{
try {
return $this->count(['command' => strtolower($command)]);
} catch (\Exception $exception) {
throw new ProcessPersistenceException('Cannot count ', $exception);
}
}
}