Я провел весь пример https://github.com/krakjoe/pthreads/tree/seven/examples
в CLI. После выполнения каждого из них я получаю PHP Fatal error
и Fatal error
, в дополнение к ожидаемому результату. Например, в этом случае https://github.com/krakjoe/pthreads/blob/seven/examples/ClosureFuture.php
Я получу:
object(Volatile)#6 (2) {
[0]=>
string(5) "Hello"
[1]=>
string(5) "World"
}
array(2) {
[0]=>
string(5) "Hello"
[1]=>
string(5) "World"
}
PHP Неустранимая ошибка: невозможно объявить класс Future, потому что имя уже используется в /var/www/test/index1.php в строке 42
Неустранимая ошибка: невозможно объявить класс Future, потому что имя уже используется в /var/www/test/index1.php в строке 42
Во всех примерах ошибка возникла, когда расширенный класс закрыт.
Вы знаете причину этих ошибок и как их исправить? Любая помощь будет оценена.
class Future extends Thread {
private function __construct(Closure $closure, array $args = []) {
$this->closure = $closure;
$this->args = $args;
}
public function run() {
$this->synchronized(function() {
$this->result =
($this->closure)(...$this->args);
$this->notify();
});
}
public function getResult() {
return $this->synchronized(function(){
while (!$this->result)
$this->wait();
return $this->result;
});
}
public static function of(Closure $closure, array $args = []) {
$future =
new self($closure, $args);
$future->start();
return $future;
}
protected $owner;
protected $closure;
protected $args;
protected $result;
}//line 42
Похоже, что вы обнаружили ошибку или некоторые ошибки в pthreads, сообщите об этом в github.
Пожалуйста, включите в отчет как можно больше информации. "Неустранимая ошибка" не очень полезна.
PHP7 и pthreads v3 являются предварительным качеством выпуска, цитируемый пример ClosureFuture был просто обновлен в последнем фиксации вместе с незначительными изменениями.
Проверьте установленную на сервере версию PHP. Согласно документу, его поддержка от (PHP 5> = 5.3.0).