Как получить доступ к переменной конструктора потока в функции запуска?

  class Test extends thread {
function __construct(&$db,$userObj) {
$this -> userObj = $userObj;
print "Original:";
var_dump($db);
$this->db = $db;
print "InThread:";
var_dump($this->db);
// as value of $this->db and db(in constructor) is different I am gettting different values.
}
public function run(){
$userId = $this->userObj->getUserId();
$data = $this->db->getData();
// as value of $this->db and db(in constructor) is different I am getting different values.
}

function getData(&$db,$userObj){
$thread = new Test($db,$userObj);
$thread->start();
}

Я хочу использовать значение db в моей функции запуска. Как получить доступ к переменной конструктора потока через run () без изменения значений $ db.

1

Решение

Объекты, установленные как свойства-члены Threaded объекты, которые сами не являются Threaded будет автоматически сериализован при записи и автоматически не сериализован при чтении.

Когда Threaded доступ к свойству члена, pthreads необходимо запретить возврат объектов, созданных другими Threads из-за архитектуры PHP (ничего не поделитесь).

Если само свойство Threaded тогда это эффективно управляется (в PHP7), но вы все равно не получаете тот же физический объект.

Это причина того, что $this->db а также $db это разные объекты.

Попытка передать по ссылке не будет иметь никакого значения; Threaded объекты не поддерживают ссылки на свойства элемента.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]