データベースのデータを定期的に順番に利用する

例えば、MYSQLデータベースのデータを1番から順番に(順番にの部分が重要)、1日10個ずつ利用するためにはどうしたらいいか調べた。
実際に選んだのは、カウンターとCRONを使った方法。
まず、実行ファイルは、CRONで一日一回動かす。
これはやり方は簡単なので省略。
次に、データベースから順番にデータを取り出す方法。
順番に取り出すには、連続性を持たせるために、取り出したデータの順番をどこかに一旦保存しないといけない。
そのために外部にテキストファイルを作って置いて、そこでカウンターを動かしてやることで、データの順番の記憶に使える。
PHPの場合は、実行ファイルの中に、以下を入れておき、同じ場所にcount.txtという空白のテキストファイルを置いてあげる。

$file_pointer = @fopen(“count.txt”,”r+”);
if(flock($file_pointer, LOCK_EX)){
$count = fgets($file_pointer, 65);
if(!isset($count) or !is_numeric($count)){
$count = 0;
}
$count++;
rewind($file_pointer);
fwrite($file_pointer, $count);
flock($file_pointer, LOCK_UN);
}else{
echo “失敗”;
}
fclose($file_pointer);

内容はテキストファイルを開いて、中の数字を取り出し、1を足して、新しく書き換えて保存するというもの。

このプログラムで、count.txtの中の数字が、プログラムがCRONで実行されるたびに1づつ増えていき、1,2,3,4,5,・・・となる。
この数字を利用すると、データを毎日順番に取り出して利用することができる。

$count++;

の部分を

$count–;

とすると、逆に一個ずつ減らすことも可能。
他にも方法があると思うけど、取り敢えず今はこの方法がお手軽なので使ってみた。

コメントを残す