Мне нужно отправить некоторые изображения через tesseract, и для экономии времени я хочу запустить tesseract параллельно с до 6 экземплярами.Запуск PHP с многопоточным (tesseract)
Я посмотрел на этот вопрос, но не могу действительно понять, как писать код
How can one use multi threading in PHP applications
Все изображения выбираются из базы данных, а результаты записываются обратно к конкретной строке в базы данных вместе с остальной частью информации, связанной с изображением
Не могли бы вы обратиться к примеру или могли бы написать быстрый пример о том, как выполнить эту работу?
Когда процесс завершен, необходимо запустить новый, так что одновременно будет работать до 6 процессов?
обновление
class Command {
private $descriptorspec;
private $output = '';
public function __construct(){
$this->descriptorspec = [
0 => ['pipe', 'r'], // stdin
1 => ['pipe', 'w'], // stdout
2 => ['pipe', 'w'], // stderr
];
}
public function output(): string{
return $this->output;
}
public function exec(string $syntax): string{
$process = proc_open($syntax, $this->descriptorspec, $pipes);
$this->output = stream_get_contents($pipes[1]);
fclose($pipes[1]);
$stderr = stream_get_contents($pipes[2]);
fclose($pipes[2]);
proc_close($process);
return $stderr;
}
}
$Cmd = new Command;
$Cmd->exec('tesseract ...');
Что вы повторно ally want - это другой сервер, на котором вы также разгружаете эти процессы. Альтернативно, если вы используете Laravel, у них есть отличный модуль Run Queue, позволяющий параллельно выполнять параллельные задания. – Alex