4回にわたって、Twitter APIで取得したツィートの追加と削除を繰り返すための記事を書いてきました。
- PHPとMySQLを使ってTwitter APIで取得したツィートの追加と削除を繰り返す(その1~考え方)
- PHPとMySQLを使ってTwitter APIで取得したツィートの追加と削除を繰り返す(その2~ステータスIDとsince_idについて)
- PHPとMySQLを使ってTwitter APIで取得したツィートの追加と削除を繰り返す(その3~データ追加のためのプログラミング)
- PHPとMySQLを使ってTwitter APIで取得したツィートの追加と削除を繰り返す(その4~データ削除のプログラミングと定期実行のコマンド)
ですが、ここにきて、「その2」の概念図を修正しなければならないことに気が付きました。
目次
「一定時間」の欠点
一定時間内に決まった数を追加・削除することには、2つの「欠点」が存在します。
- 一定時間内のツイートが多くなると、最新のタイムラインが表示されなくなる(リアルタイム性が欠ける)
- 一定時間内のツイートが少なくなると、タイムラインが乏しくなる(コンテンツの貧弱化)
この2つの欠点を補うためには、時間だけで更新するのではなく、レコード件数でも更新をかける必要があります。
crontabコマンドとif文の組み合わせ
2枚目のスライド画像は、2つの欠点を補う概念です。スライド画像の説明書きをテキストにしておきます。
- a.30分おきに10件追加→10件追加→20件削除
- b.レコード件数が100件に到達したら削除
時間によっては、データベースの件数は変わりますが、それでも一定件数内にしておくという考え方です。
もう少し詳しく説明すると、
- 30分毎の追加動作は、crontabコマンドでを使用する
- 削除動作は、PHPもしくはMySQLでif文を設定し自動削除する
ということになります。今回の例では、非常に粗いタイムラインになると思います。
ですが、「30分」・「10件」・「20件」という数字に関するところを変更すれば、先に挙げた「欠点」を補えると考えます。
if文について
ここで注目するのは、if文における条件内容です。プログラミングチックに書くと、このような感じになるでしょう。
しかしながら、現状では2つの問題が存在します。
- その条件文はPHPとMySQLのどちらで記述するべきか?
- 「120件で自動削除」という判定はどのように書くか?
自分一人で考えても思いつかないので、オフライン上で詳しい方に尋ねることにします。