当两个用户提交相同的表单并且服务器上执行包含多个查询的 php 代码时,会发生什么?

当两个用户提交相同的表单并且服务器上执行包含多个查询的 php 代码时,会发生什么?

我想问一下,如果两个用户提交相同的表单,然后执行包含多个查询的 php 代码(这些查询在多个 for 循环和 if 语句中)并更改表数据,会发生什么情况?我想知道 php 代码中的所有查询是否先为第一个用户运行,然后再为下一个用户运行,还是两个用户的查询将同时运行,如果查询将同时运行,那么我该怎么做才能停止这种情况并先执行第一个用户的所有查询,然后再执行第二个用户的所有查询?

答案1

SQL-Server 对您的 PHP 代码一无所知 - 它只是感知发送给它的一系列查询和语句。如果您的 PHP 函数对于它执行的数据库操作不是原子的,那么您必须自己明确处理这些竞争条件,例如通过锁定表或相关行。

请注意,根据您使用的隔离级别,一个会话对表数据的更改可能对其他会话可见,也可能不可见。但是,这种隔离本身并不足以保证函数的原子性。

相关内容