{site_name}

{site_name}

🌜 搜索

mysqli::poll() 方法用于在多个 MySQL 连接上执行非阻塞查询

php 𝄐 0
phpmysqli占位符使用,phpmysqli读取行数
mysqli::poll() 方法用于在多个 MySQL 连接上执行非阻塞查询。它在指定的连接上执行一次轮询操作,以查看是否有数据可用。它通常用于管理并发连接,提高性能。

mysqli::poll() 方法接受三个参数,分别是 read,write 和 error。这些参数是数组,每个元素代表一个连接,键为连接对象。方法将检查每个连接,以确定是否可以读取、写入或者是否发生了错误。

方法返回一个整数值,表示成功的查询数量,-1 表示出错,0 表示没有查询数据可用。

以下是一个使用 mysqli::poll() 方法的示例:


$links = [$conn1, $conn2, $conn3]; // 连接对象数组
$query = "SELECT * FROM my_table"; // 查询语句

// 执行查询
foreach ($links as $link) {
$link->query($query, MYSQLI_ASYNC); // 使用 MYSQLI_ASYNC 标志执行异步查询
}

// 轮询连接
while (mysqli::poll($links, $errors, $reject, $timeout) !== false) {
foreach ($links as $link) {
if ($result = $link->reap_async_query()) { // 回收查询结果
// 处理查询结果
// $result 是 mysqli_result 对象
while ($row = $result->fetch_assoc()) {
// 处理每一行数据
echo $row['column_name'];
}
$result->free(); // 释放结果集
}
}
}

// 关闭连接
foreach ($links as $link) {
$link->close();
}


这个例子中,我们首先通过执行异步查询在每个连接上提交了查询语句。然后使用 mysqli::poll() 方法轮询每个连接,检查是否有查询数据可用。如果有,我们通过 $link->reap_async_query() 方法提取结果并处理它们。

注意,这只是 mysqli::poll() 方法的一个示例用法。具体的使用方法可能依赖于你的应用程序的需求和架构。