Запуск Symfony Process в несколько потоков

129
22 апреля 2021, 05:40

Есть код:

use Symfony\Component\Process\Exception\ProcessFailedException;
use Symfony\Component\Process\Process;
while (count($this -> allApps) > 0 ){
$app = array_shift($this -> allApps);
$process = new Process(['/usr/bin/php','task.php','GetData',$app['app']]);
$process->run();
if (!$process->isSuccessful()) {
    throw new ProcessFailedException($process);
}
self :: log ($app);
self :: log ("Accs left: " . count($this -> allApps) . "\n");
}

В один поток из массива $this -> allApps берутся данные, запускается внешний php скрипт, после его выполнения, процедура повторяется, пока массив не будет пустым.

Знаю что Process Component может работать асинхронно.

Скажите, есть возможность запускать по 3-10 воркера(process) внутри while, и по мере освобождения одного из них - давать ему новую задачу из $this -> allApps?

Answer 1

Чтобы вы смогли реализовать данную задачу правильно, вам стоит использовать очереди. Обратите внимание на RMQ и реализацию функционала в Symfony - RabbitMQBundle

READ ALSO
выводить массив через Ajax на PHP

выводить массив через Ajax на PHP

необходимо при клике выводить массив через Ajax на PHPв моем случае PHP выводит NULL

102
Скрытые файлов в public laravel 5

Скрытые файлов в public laravel 5

Есть папки с изображениями, путь к ним таков "sitecom/1/thumbnail

126
Как убрать галочку “Use androidx.* artifacts” в Android Studio 3.4.2?

Как убрать галочку “Use androidx.* artifacts” в Android Studio 3.4.2?

В старых версиях Android Studio был флажок "Backwards Compatibility", в Android Studio 34

99