Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/230.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 为每个数据库条目正确分配公共id_Php_Sql_Mongodb - Fatal编程技术网

Php 为每个数据库条目正确分配公共id

Php 为每个数据库条目正确分配公共id,php,sql,mongodb,Php,Sql,Mongodb,假设我有十个并行运行的cron作业,它们从数据库中获取条目并进行处理 第一个cron作业从数据库中获取“commonId”字段为1的所有条目, 第二个从数据库中获取所有条目,其中“commonId”字段为2,以此类推,直到10 解决方案- 当我从前端向数据库添加条目时,我有一个保存了“最后一个”公共id的文件。该id递增到10,然后对于数据库中的每个条目再次设置为1 跨栏- 前端有很多用户,添加条目时,两个或三个连续条目使用相同的公共id。这不应该发生。数据库中的每个条目都应该具有1-10之间的

假设我有十个并行运行的cron作业,它们从数据库中获取条目并进行处理

第一个cron作业从数据库中获取“commonId”字段为1的所有条目, 第二个从数据库中获取所有条目,其中“commonId”字段为2,以此类推,直到10

解决方案- 当我从前端向数据库添加条目时,我有一个保存了“最后一个”公共id的文件。该id递增到10,然后对于数据库中的每个条目再次设置为1

跨栏- 前端有很多用户,添加条目时,两个或三个连续条目使用相同的公共id。这不应该发生。数据库中的每个条目都应该具有1-10之间的序列公共id

有什么解决办法吗?要获取最新的公共id

我在用MongoDB


如果这不可能。可以做些什么

你想要的是一个原子操作,MongoDB有办法做到这一点。看

你有什么特别想让他们这样循环的原因吗?如果您允许任何计时作业使用任何挂起的作业,它的处理速度不是更快吗


我建议简单地依赖生成的MongoID(请参阅),按它们的相反顺序查找第一个未分配的工作项,使用前面提到的原子技术之一获取它。如果找不到工作,请睡眠并重试或退出(取决于您的chron作业重新安排这些工作的频率)。

我建议查看该页面上的命令和示例。如果你只是在寻找一个快速的自动递增/串行计数器,我建议你看看这篇博文:。

使用任何挂起的作业