Я пытаюсь вставить запись в базу данных, поступающую на сервер реагирующих сокетов. Я заблудился о том, как выполнять свою работу неблокирующим образом
$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
в базе данных имеет sleep(10)
секунд до выполнения оператора sql. Поэтому я ожидаю, что следующее сообщение I am supposed to..
должно быть напечатано немедленно.
Я ожидал, что когда будет операция ввода-вывода, операция будет перемещена в таблицу событий и не будет блокировать стек вызовов. Согласно определению цикла событий и неблокирования.
Как я могу выполнить ту же операцию неблокирующим образом.
Спасибо