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

时间:2015-12-09 00:27:19

标签: 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);

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

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

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

1 个答案:

答案 0 :(得分:4)

  1. 尝试模拟在相同的纳秒内发生的动作一般来说是困难和不切实际的,我只是做一个全面的声明,它在PHP或mySQL中根本不可能< em>分开,更不用说串联了。

  2. 您不能同时在表格中插入两行。永远不会。你可以在RDBMS中有两个线程如此快速和无缝地插入行,为了所有意图和目的,你可以声明它同时发生,但是为了保持一致性,RDBMS必须是单个的,连续的没有分支的操作​​顺序。

  3. 甚至不用担心你试图模拟的情况。我必须认真研究才能找到无法优雅地处理这种情况的RDBMS。