Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
正确处理并行插入PHP/MySQL_Php_Mysql_Parallel Processing - Fatal编程技术网

正确处理并行插入PHP/MySQL

正确处理并行插入PHP/MySQL,php,mysql,parallel-processing,Php,Mysql,Parallel Processing,我有一个PHP应用程序,它从外部源接收信息,并将数据保存到MySQL 算法非常简单。发送的数据是一个字符串,其工作方式如下: 以$data格式接收数据。例:$data=info 检查数据库中是否存在信息。例如:从data=info的表中选择count* 如果信息存在,则退出 否则在数据库中插入信息并退出。 当有多个对页面的并行请求时,会有一些重复的请求。数据可以多发送两次,但我们只需要保存一次 原因是在步骤2和步骤3之间有一段时间间隔,数据仍然没有插入,因此两个实例可以同时插入数据 用PHP处理

我有一个PHP应用程序,它从外部源接收信息,并将数据保存到MySQL

算法非常简单。发送的数据是一个字符串,其工作方式如下:

以$data格式接收数据。例:$data=info 检查数据库中是否存在信息。例如:从data=info的表中选择count* 如果信息存在,则退出 否则在数据库中插入信息并退出。 当有多个对页面的并行请求时,会有一些重复的请求。数据可以多发送两次,但我们只需要保存一次

原因是在步骤2和步骤3之间有一段时间间隔,数据仍然没有插入,因此两个实例可以同时插入数据

用PHP处理这个问题的正确方法是什么

我的想法不是向MySQL添加唯一的索引,我知道它会工作,但会抛出一个错误。此外,发送的数据非常长,索引也有限制。

您可以在单个查询中执行测试和插入:

INSERT INTO yourTable (columnName)
SELECT :data
FROM DUAL
WHERE NOT EXISTS (SELECT 1 FROM yourTable WHERE columnName = :data)

这就是事务的用途。我想我将使用存储过程,因为我还需要将每个用户的数据分开,并计算每个用户收到不同信息的时间。谢谢你的帮助。我还需要数一数时间。我简化了示例中的算法,但这是每个用户的链接,因此我需要对每个用户计数一次,即使他们多次单击。在另一个表中,我有打开链接的用户数量。我认为最好的方法是使用存储过程。您当然可以将子查询扩展为表之间的连接。基本思想是,只有在其他查询没有找到任何内容时,才可以使用这种通用方法添加行。只需将另一个查询放在不存在的位置。