发布
社区首页 >问答首页 >PHP可以在Apache环境中发出多处理mysql查询吗?

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

Stack Overflow用户
提问于 2011-08-25 10:10:07
回答 1查看 1.8K关注 0票数 6

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

代码语言:javascript
代码运行次数:0
复制
$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连接并行工作吗?

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-08-25 10:20:25

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

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

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7188576

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档