このスクリプトが要求/実行されるたびに、MyISAMテーブルのデータを取得するスクリプトを作成します。 クエリは次のようになります。カウンタマルチスレッドリクエストを使用して繰り返しを避ける
SELECT * FROMテーブルLIMIT $ offset、10;
問題は、$オフセットが最初の要求で0、秒で10、等であることです。 次に、毎回$ 10ずつ増分するカウンタを持つ新しいテーブルを作成しましたそのスクリプト が要求されます。
スクリプトには同時に多くのリクエストがあることを知っておく必要があります。リクエストはユーザー(訪問)ではありません。 リクエストは5台以上のPCで実行され、これらのソフトウェアのそれぞれが で実行され、1000以上のスレッドがこのスクリプトに対するリクエストを実行しています。次に、2つ以上のスレッドがこのスクリプトに正確に同時に要求した場合、 をこれらのスレッドに返さないというソリューションを検索します。 また、カウンタが完璧に増加する必要があります。機能
$offset = GetAndUpdateCounter(10);
を呼び出す
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'];
}
例
$ Q =するmysql_query( "オフセットテーブルリミット$ * FROM 10を選択")。