Я пытаюсь найти лучший способ использовать pthreads с PHP и, возможно, я не искал в нужных местах. Я написал сценарий с примером из https://www.sitepoint.com/parallel-programming-pthreads-php-fundamentals/
Когда я его реализовал, все выглядело нормально, но когда я действительно увеличил время ожидания и увеличил количество итераций, я, кажется, использовал 100% одного процессора при выполнении этого сценария вместо распределения доступных процессоров. Иногда загрузка переключается на другой процессор, но в основном останавливается на одном процессоре и продолжает работать на 100% на другом процессоре. Это предполагаемая функциональность или, может быть, я неправильно скомпилировал pthreads с 7.2.10? Код и скриншоты ниже:
<?php
class Task extends Threaded{
private $value;
public function __construct(int $i){
$this->value = $i;
}
public function run(){
// Just to get longer running execution on
// odd numbers
if($this->value % 2 == 0){
$t = rand(250000, 1000000);
} else {
$t = rand(250000, 10000000);
}
usleep($t);
echo "Task:{$this->value}\t($t)\n";
}
}
$pool = new Pool(8);
for ($i = 0; $i < 1024; ++$i) {
$pool->submit(new Task($i));
}
while ($pool->collect());
$pool->shutdown();
Я делаю что-то неправильно? или это имеет смысл для pthreads для php?
Задача ещё не решена.
Других решений пока нет …