Доступ к данным из другого потока

159
31 января 2019, 03:00

Решил вспомнить PHP и написать простую программу, но столкнулся с проблемой доступа к данным из другого потока, не понимаю что не так, вроде все правильно, но не работает корректно

<?php
class B extends Thread {
    private $a;
    public function __construct(A $a) {
        $this->a = $a;
    }
    public function run() {
        var_dump($this->a->method());
    }
}
class A {
    private $socket;
    private $b;
    public function __construct() {
        $this->socket = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
        if (!$this->socket) {
            echo 'socket create error';
            exit;
        }
        if (!socket_bind($this->socket, '0.0.0.0', 22222)) {
            echo 'socket bind error';
            exit;
        }
        $this->b = new B($this);
        $this->b->start();
        sleep(1);
    }
    public function method() {
        return $this->socket;
    }
}
$a = new A();

Выводит:

int(0)

хотя должно выводится что-то в этом роде:

resource(4) of type (Socket)

Answer 1

Как оказалось PHP модуль pthreads не поддерживает ресурсы, их нельзя использовать в разных потоках

READ ALSO
Ошибки загрузки расширений PHP

Ошибки загрузки расширений PHP

Использую lamp сервер на ubuntu на php72

209
Как в ссылке на картинку добавить размер?

Как в ссылке на картинку добавить размер?

Вот есть такая ссылка в виде, но без парамразмера картинок

203
steam api, convert steamID64

steam api, convert steamID64

меня очень сильно интересует вопрос, как конвертировать steamID64 в SteamID3 Я понимаю, что у меня нету кода, могу предоставить только код на получение...

191
Выбрать элементы по массиву со списком ключей

Выбрать элементы по массиву со списком ключей

Есть ли какая-нибудь функция в php, позволяющая выбрать из одного массива элементы, ключи которых соответствуют элементам другого массива?...

182