Rah*_*eel 3 php nonblocking event-loop reactphp
我试图在数据库中插入一条记录到反应套接字服务器。我不知道如何以非阻塞方式进行操作
$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();
Run Code Online (Sandbox Code Playgroud)
write数据库中的方法在sleep(10)执行sql语句之前有几秒钟的时间。所以我期待I am supposed to..应该立即打印下一条消息。
我的期望是,当有 I/O 操作时,该操作将被移动到事件表并且不会阻塞调用堆栈。根据事件循环和非阻塞的定义。
如何以非阻塞方式执行相同的操作。
谢谢
小智 7
嘿 ReactPHP 核心团队成员。循环期望一切都是异步的,因此在 $database->write($data); 中休眠。会阻塞循环。您的数据库连接必须利用事件循环才能使其非阻塞。我的建议是查看https://github.com/friends-of-reactphp/mysql或https://github.com/voryx/PgAsync或检查这里的列表https://github.com/reactphp/react /wiki/Users#databases取决于您的数据库。ReactPHP 不会神奇地使一切都成为非阻塞的,您必须使用为您处理这些的包。
| 归档时间: |
|
| 查看次数: |
850 次 |
| 最近记录: |