PHP下的mysql_查询是一个阻塞函数吗?
假设我正在服务器上使用PHP下的mysql_查询是一个阻塞函数吗?,php,mysql,Php,Mysql,假设我正在服务器上使用mysql\u query执行多个查询。每个查询的结果都会影响后续查询。在控制转移到下一个之前,mysql\u query的每个调用是否都会被完全执行 编辑:我忘了提一下,我没有使用事务存储引擎。是的,MySQL服务器必须返回数据并完成查询,然后PHP才能执行下一个操作,无论是分配返回值还是执行下一行代码 mysql_query( "INSERT INTO y VALUES (x,1)" ); mysql_query( "SELECT x FROM y WHERE z=1"
mysql\u query
执行多个查询。每个查询的结果都会影响后续查询。在控制转移到下一个之前,mysql\u query
的每个调用是否都会被完全执行
编辑:我忘了提一下,我没有使用事务存储引擎。是的,MySQL服务器必须返回数据并完成查询,然后PHP才能执行下一个操作,无论是分配返回值还是执行下一行代码
mysql_query( "INSERT INTO y VALUES (x,1)" );
mysql_query( "SELECT x FROM y WHERE z=1" );
mysql_query( "UPDATE y SET x=x+1 WHERE z=1" );
mysql_query( "SELECT x FROM y WHERE z=1" );
x将是1,然后是2,在执行第四条语句时,2将返回到脚本。不可能在单个PHP脚本中并行运行查询-这需要在另一种语言(即Java)中并行执行或线程化。在相同的脚本和线程中,是的。来自其他PHP脚本的其他查询可能同时运行,但来自PHP脚本的所有查询都将被阻止
在继续之前,您将始终能够评估返回值。当您不使用事务时,MySQL将立即提交每个查询,而不管您使用的是哪种编程语言。因此,是的,您可以依赖于查询的顺序性。正如其他人已经提到的,PHP是一种顺序语言(即一条语句将在下一条语句之后执行),没有对线程的明确支持。但是,您可以使用它,它只会阻塞到返回结果的第一行(而不是像mysql\u query那样等待所有行)。这并没有回答原始问题,而是与问题标题相关: 如果您想要非阻塞,有一个准选项可以工作:
多线程示例:注意:默认情况下,pcntl未启用,在Windows平台上无法工作。请注意,MySQL 5.6中已弃用延迟关键字,MySQL 8.0+中不再支持该关键字。