Как подсчитать количество операций в параллельных процессах PHPPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Как подсчитать количество операций в параллельных процессах PHP

Сообщение Anonymous »

У меня есть процесс CLI, который использует ReactPhp \ childProcess для создания параллельных процессов, в среднем 600 из них, но может быть больше.
Каждый процесс условной выполняет операции A, B, C ... z , каждая операция имеет свои пределы выполнения, I.E. a = 10, b = 15 loop->addTimer(30, function() use ($process) {
$process->start($this->loop);
});
});

$process->start($this->loop);
}

$this->loop->run();
}
}
< /code>
worker.php
// Class Worker CLI command
class WorkerCmd
{
public function action(int $id)
{
$worker = ... // get some worker info by $id;
$operations = $worker->getOperations(); // get list of 'A', 'B'... 'Z' operation how this worker can solve
$redis = new \Redis(/* connection info */);

/**
* $operationName look like string, example 'A'
* $operationData look like array:
* [
* 'throttle_cnt' => 15,
* ...
* ]
*/
foreach ($operations as $operationName => $operationData) {
... // some logic before reserved this operation

// Operation ready to reserve
// !!! WARNING This is "Bottleneck" Redis is to slow for meany workers and operation, need the alternative thing
$count = $redis->incr($operationName);
if ($count > $operationData['throttle_cnt']) {
$redis->decr($operationName);

continue;
}

// Some logic with execution this operation
$operationName($operationData);
$redis->decr($operationName);
}
}
}


Подробнее здесь: https://stackoverflow.com/questions/797 ... -processes
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»