} Но если вывести $this->domains_ip то он все время пустой, то есть новое значение не добавляется. Почему так происходит и как пофиксить. Спасибо!domains_ip); $ip = gethostbyname($domain); $this->domains_ip[$ip] = $domain; return $ip;
function __construct(GetInfo $obj) { $this->get_info_object = $obj; }
function check_ip($domain) { echo $this->get_info_object->get_ip($domain); }
} $o = new GetInfo(); $t = new my_thread($o); $t->check_ip("google.com"); $t->check_ip("pivo.com"); В общем вот пример, в котором показано, что, почему-то не работает как положено.
Проблема заключается в том, что каждый раз при создании нового экземпляра класса my_thread присваивается новый объект GetInfo, а не передается существующий. Таким образом, каждый поток работает с собственным экземпляром GetInfo, и поэтому массив $domains_ip не заполняется.
Чтобы исправить эту проблему, вам нужно передавать один и тот же объект GetInfo в каждый экземпляр my_thread. Пример исправления:
class my_thread extends Thread { private $get_info_object; function __construct(GetInfo $obj) { $this->get_info_object = $obj; } function check_ip($domain) { echo $this->get_info_object->get_ip($domain); } } $o = new GetInfo(); $t1 = new my_thread($o); $t2 = new my_thread($o); $t1->check_ip("google.com"); $t2->check_ip("pivo.com");
Теперь оба потока будут использовать один и тот же объект GetInfo, и массив $domains_ip будет заполняться правильно.
Проблема заключается в том, что каждый раз при создании нового экземпляра класса my_thread присваивается новый объект GetInfo, а не передается существующий. Таким образом, каждый поток работает с собственным экземпляром GetInfo, и поэтому массив $domains_ip не заполняется.
Чтобы исправить эту проблему, вам нужно передавать один и тот же объект GetInfo в каждый экземпляр my_thread. Пример исправления:
class my_thread extends Thread {private $get_info_object;
function __construct(GetInfo $obj)
{
$this->get_info_object = $obj;
}
function check_ip($domain)
{
echo $this->get_info_object->get_ip($domain);
}
}
$o = new GetInfo();
$t1 = new my_thread($o);
$t2 = new my_thread($o);
$t1->check_ip("google.com");
$t2->check_ip("pivo.com");
Теперь оба потока будут использовать один и тот же объект GetInfo, и массив $domains_ip будет заполняться правильно.