Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.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_Amazon Web Services_Unique - Fatal编程技术网

Php 在mysql中生成批次号?

Php 在mysql中生成批次号?,php,mysql,amazon-web-services,unique,Php,Mysql,Amazon Web Services,Unique,我们有一个脚本,其功能如下: 脚本在数据库中插入n行,并在批处理列中插入相同的唯一的编号 脚本使用批次号将作业放入AWS队列。 AWS worker在我们的服务器上执行一些处理并启动另一个脚本。 服务器上的脚本将来自AWS工作者的响应插入批处理中的所有行 这很容易,除了创建批号。 由于多个用户可以同时创建一个批次,因此我们不能仅获取最大批次号并添加1 那么最理想的方法是什么呢?批次号不必是整数,尽管它可能很有用。创建一个名为batches的新表,每个批次有一行。此表将有一个名为batchid的自

我们有一个脚本,其功能如下:

脚本在数据库中插入n行,并在批处理列中插入相同的唯一的编号

脚本使用批次号将作业放入AWS队列。
AWS worker在我们的服务器上执行一些处理并启动另一个脚本。
服务器上的脚本将来自AWS工作者的响应插入批处理中的所有行

这很容易,除了创建批号。 由于多个用户可以同时创建一个批次,因此我们不能仅获取最大批次号并添加1


那么最理想的方法是什么呢?批次号不必是整数,尽管它可能很有用。

创建一个名为
batches
的新表,每个批次有一行。此表将有一个名为
batchid
的自动递增列


脚本将首先在此表中插入一行。除了
batchid
,它还可以包含创建批次的时间戳、创建批次的人以及其他相关信息。然后,该id将在批处理的其余部分使用。

我建议最好使用
uniqid
之类的方法生成随机序列,然后使用
MD5
之类的方法确保一致性

$batch = md5(uniqid('some salt', true));

不能保证它是唯一的,但对于简单的情况来说它足够唯一。

使用带有单个自动增量列的附加表模拟序列?我将向time(),
time()附加一些随机数。rand(10,99)
,您还可以在用户id中添加一些运行编号。“足够独特”-您没有中断的实现,但是在周六晚上,当一切意外失败并破坏了一些数据时,会被唤醒:-)除了batchid之外,它还可以包含wh…-这是我听到的第一个很好的论据,我想为批次创建一个单独的表,比如插入第一行获取插入id,使用该id作为批次号插入其余行,然后更新第一行以获得批次号。