gpt4 book ai didi

php - PHP 可以在 Apache 环境中发出多处理的 mysql 查询吗?

转载 作者:可可西里 更新时间:2023-11-01 06:46:16 25 4
gpt4 key购买 nike

我有一个 4 核数据库服务器和一个运行 PHP 的网络服务器。我希望一个 PHP 脚本能够向数据库服务器发出查询,以便它们在数据库服务器上并行执行,每个 mysqld 进程一个。通常在 PHP 中你这样做:

$sql = new mysqli( [insert connection parameters] );
$sql->query( "SELECT 'Complex Query A'" );
$sql->query( "SELECT 'Complex Query B'" );
$sql->query( "SELECT 'Complex Query C'" );
$sql->query( "SELECT 'Complex Query D'" );

但是它们是串行运行的并且只使用一个 mysqld 进程。在此应用程序中,每个查询(A 到 D)都在处理数据的不同部分,但处理的是同一组 InnoDB 表。

一种可能的解决方案是对 apache 进行 AJAX 调用,将其分解为可能并行运行的子脚本,但我猜测 Apache 将使用一个 httpd 按顺序处理这些 ajax 调用每个客户处理。

有办法实现吗?有没有人有 mysqlnd MYSQLI_ASYNC 功能的经验?它们能否与单个数据库服务器和 mysqli 连接并行工作?

目的:我们运行生成图表的实时分析工具,我想利用我们数据库的处理能力来加快需要时间的查询。

最佳答案

您需要的是异步查询执行。当您拥有新的 mysqlnd 驱动程序时,可以从 PHP 5.3 开始 - 然后您可以将 MYSQLI_ASYNC 标志传递给 query()方法。脚本将继续执行,而无需等待您的查询完成。 PHP 手册中有一个很好的用法示例,在 poll() method 的注释中.

对于要并行执行的每个查询,您都需要一个单独的 MySQL 连接。

关于php - PHP 可以在 Apache 环境中发出多处理的 mysql 查询吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7188576/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com