每当请求/运行这个脚本时,我都会制作一个脚本来获取mysql MyISAM表的数据。该查询如下所示:
从表限制$offset中选择*,10;
问题是,$offset必须在第一个请求中为0,在第二个请求中为10个,在第三个请求中为20个等等。然后,我创建了一个新表,其中我为$offset创建了一个计数器,每次请求该脚本时都会增加+10。
您必须知道脚本同时会有许多请求。请求不是用户(访问),请求是我的软件,运行在5台以上的PC上,每个软件运行着1000多个线程,对这个脚本进行请求。然后,我搜索一个解决方案,如果两个或多个线程同时请求这个脚本,则不会返回到这些线程的结果相同。另外,我需要那个计数器将增量完美。
function GetAndUpdateCounter($numberToAdd)
{
$link = mysql_connect('localhost','root','abcd1234');
if(!$link) die ('Could not connect to database: '.mysql_error());
mysql_select_db('dbcounter',$link);
// in the 2 lines below I have my question about what happend if 2 or
// more threads/request do this at same time, will get same result and will do same update
$result = mysql_query("SELECT id FROM counter");
mysql_query("UPDATE counter SET id=(id+$numberToAdd);");
$row = mysql_fetch_array($result, MYSQL_ASSOC);
mysql_close($link);
return $row['id'];
}调用函数的示例
$offset = GetAndUpdateCounter(10);$q =mysql_query(“从表限制$offset,10中选择*”);
发布于 2017-05-28 03:23:53
在列出您的问题解决方案之前,我想给您一条建议:不要,请不要使用mysql_函数,它们可能有害,在最新的please .中被废弃。
有几种方法可以实现你想要的。我会按优先级按升序列出它们。
https://stackoverflow.com/questions/44223341
复制相似问题