У меня проблема: рабочие потоки работают последовательно.
Это очень простой пример только для демонстрации проблемы.
Я инициализирую свои рабочие потоки и запускаю их. Он должен работать параллельно, однако результат выглядит так, как будто он обрабатывался последовательно.
PHP 5.6.12, Windows ОПЕРАЦИОННЫЕ СИСТЕМЫ, апаш сервер
DBWorker:
Что, конечно, расширяет класс pThreads Worker
class DBWorker extends Worker {
private $str;
public function __construct($str){
$this->str = $str;
}
public function run(){
$i=0;
while($i < 10) {
echo "$this->str: $i\n";
$i++;
}
}
}
инициализация:
private $DBWorker1;
private $DBWorker2;
private $DBWorker3;
/* ... */
public function __construct(){
$this->DBWorker1 = new DBWorker("worker1");
$this->DBWorker2 = new DBWorker("worker2");
$this->DBWorker3 = new DBWorker("worker3");
}
/* ... */
$this->DBWorker1->start();
$this->DBWorker2->start();
$this->DBWorker3->start();
$i=0;
while($i < 10) {
echo "parent: $i\n";
$i++;
}
var_dump($this->DBWorker1->shutdown());
var_dump($this->DBWorker2->shutdown());
var_dump($this->DBWorker3->shutdown());
Результат:
parent: 0
parent: 1
parent: 2
...
parent: 6
worker1: 0
worker1: 1
worker1: 2
...
worker1: 59
worker2: 0
worker2: 1
worker2: 2
...
worker2: 59
worker3: 0
worker3: 1
worker3: 2
...
worker3: 59
parent: 7
parent: 8
parent: 9
bool(true)
bool(true)
bool(true)
Задача ещё не решена.
Других решений пока нет …