PHP Pthreads и загрузка процессора

Я пытаюсь найти лучший способ использовать 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?

0 ответов

Другие вопросы по тегам