在 php 中测试并发 mysql 插入操作

Edv*_*lle 1 php mysql concurrency cron

我想同时多次运行这个 php 脚本。

$db =  new mysqli('localhost', 'me', 'pw', 'test');   
$time = time();
$sql = "  INSERT INTO test  (  `test_created`  ) VALUES( ". $time  .") ";
$result = $db->query($sql);
Run Code Online (Sandbox Code Playgroud)

我这样做是因为我想复制一个场景,其中许多用户在完全相同的时间提交数据库条目,直到纳秒,这就是我所说的“并发”插入。

我尝试通过指定执行的小时和分钟来使用我的共享托管服务提供商的虚拟 cron 调度程序。然后我制作了五个包含上述代码的相同文件。

但是,当我查看表条目时,插入的时间戳并不相同。这是因为mysql无法处理并发插入操作吗?如果 mysql 可以处理“并发插入”,这是测试并发插入操作的正确方法吗?如果没有,我应该如何在有或没有 cron 的 php 环境中进行测试?

Sam*_*tch 5

  1. 试图在同一范围内发生的模拟操作纳秒是一般的困难和不现实的,并且我只是要做一个毯子声明,它在PHP或MySQL的根本不可能分开,更不用说在串联。

  2. 不能同时向表中插入两行。永远不会。您可以在 RDBMS 中拥有两个线程,如此快速且无缝地插入行,以至于对于所有意图和目的,您都可以声称它同时发生,但要使 RDBMS 保持一致性,必须有单一、连续的操作顺序,没有分支。

  3. 甚至不用担心您尝试模拟的情况。我必须进行认真的研究才能找到无法正常处理这种情况的 RDBMS 。