我正在尝试向React Socket服务器中的数据库插入记录。我不知道如何以非阻塞的方式执行此操作。
$loop = Factory::create();
$server = new Server('127.0.0.1:4040', $loop);
$database = new Database();
$server->on('connection', function(ConnectionInterface $conn) use ($database) {
$conn->write('Welcome, you can start writing your notes now...');
$conn->on('data', function($data) use ($conn, $database) {
$database->write($data);
$conn->write('I am supposed to execute before database write');
});
});
$loop->run();
数据库中的write
方法在执行SQL语句之前有sleep(10)
秒的延迟。因此,我期望下一个消息I am supposed to..
应该立即打印出来。
我的期望是,每当有I/O操作时,该操作将被移动到事件表中,并且不会阻塞调用堆栈。根据事件循环和非阻塞的定义。
如何以非阻塞的方式执行相同的操作。
谢谢