我正在制作一个多线程应用程序,该应用程序必须仅使用1个MySQL连接(并非每个线程都使用一个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']
在另一个范围内。我需要获取链接并执行查询。