Передача MySQLi ссылки на ReactPHP - PullRequest
0 голосов
/ 06 июня 2019

Я создаю многопоточное приложение, которое должно использовать только 1 соединение MySQL (не каждое для каждого потока), и я использую IPC между потоками, используя ReactZMQ.

Я пытаюсь передать ссылку MySQLi на событие сообщения, но, похоже, оно находится в другой области.

$GLOBALS['mysqli'] = null;
class Updating extends Thread
{
    private $thread_id;
    private $increment_updated = 0;
    private $increment_good = 0;
    private $increment_bad = 0;

    private $increment_empty_buffer = 0;

    public function __construct(int $thread_id)
    {
        $this->thread_id = $thread_id;
    }

    public function run()
    {

        $GLOBALS['mysqli'] = mysqli_connect(SQLHOST,SQLUSER,SQLPASS,SQLDB);

        require 'vendor/autoload.php';

        $loop = React\EventLoop\Factory::create();

        $context = new React\ZMQ\Context($loop);

        $pull = $context->getSocket(ZMQ::SOCKET_PULL);
        $pull->bind('ipc://127.0.0.1:5577');

        $pull->on('error', function ($e) {
            var_dump($e->getMessage());
        });

        $pull->on('message', function ($data) {
            echo "Received: $data\n";

            var_dump($GLOBALS['mysqli']); // return null


        ....

        $loop->run();
    }
}

В результате я получаю null, что означает, что $GLOBALS['mysqli'] находится в другой области видимости. Мне нужно получить ссылку и выполнить запрос.

...