我正在製作一個腳本,每次請求/運行此腳本時都會獲取MySQL MyISAM表的數據。 查詢是這樣的:計數器避免重複使用多線程請求
SELECT * FROM table LIMIT $ offset,10;
的問題是,在$偏移必須在第一請求中0和10秒,20在第三等等等等 然後創建一個新的表,其中我有$一個偏移計數器每次該增量10請求腳本 。
您必須知道該腳本會同時有很多請求。請求不是用戶(訪問) 請求是我的軟件在超過5臺PC上運行,並且這些軟件中的每一個都使用 以上超過1000個線程處理對此腳本的請求。然後,如果有2個或更多的線程在同一時間向這個腳本請求,那麼我搜索一個解決方案不會返回 到這些線程相同的結果。 另外我需要這個計數器會增加完美。
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( 「SELECT * FROM表LIMIT $偏移,10」);