变量:
1)名为doc_types的表,它有许多用户想要的文档类型。
2)表命名文档,包含用户创建的所有文档。
3)表名为secuence,这是我仍然遇到的并发问题的黑客攻击。
问题:
服务器每秒有大约1200次查询,在高峰时段并发方案中有超过100个唯一用户。每个用户生成多种文档类型,每种文档类型必须具有文档类型的唯一编号。 很长一段时间,我仍然无法修复它。
我的解决方案: 2个功能:
1)使用AUTOINCREMENT调用生成下一个数字以确保其结果
function generate_secuence($last_number)
{
// get the last id generated in the secuence table
$sql="select max(id_secuence) as last_secuence from secuence";
$result=mysql_query($sql);
$row=mysql_fecth_object($result);
$last_secuence=$row->last_secuence;
// insert a decoy in order to generate the unique autoincrement number
$sql="insert into secuence (ref) values ('$last_number')";
mysql_query($sql);
$new_secuence=mysql_insert_id();
// calculate the next number in a way that we get hold of the autoincrement regardless of the user timing
$next_number=$last_number - $last_secuence + $new_secuence;
return($next_number);
}
2)如果每个文档都没有编号,则会在保存时调用。
function get_next_doc_number($doc_type)
{
// get the last number of the document type the user is saving
$sql="select max(doc_number) as last_num from documents where id_doc_type='$doc_type'";
$result=mysql_query($sql);
$row=mysql_fecth_object($result);
$last_number=$row->last_num;
// call the function
$next_number=generate_secuence($last_number);
return($next_number);
}
我的问题: 我的解决方案在哪里无法解决问题,我应该如何解决?