1. TOPTOP
  2. Webサービス
  3. PHP

PHPとMySQLを使ってTwitter APIで取得したツイートの追加と削除を繰り返す(その2~ステータスIDとsince_idについて)

|

php

前回の記事(新しいタブで開く)では、Twitter APIで取得したツイートの追加と削除について、考え方を書きました。

tweet_add_delete1

その内容を概念図で表すとこんな感じです。数字はすべて例。

  • データベースの件数は常に100件とする
  • データベースの追加と削除の件数は20件とする
  • 追加と削除は常に1時間ごとに行う

以下でツイートの追加について、具体的に考えていきます。

ツイートの追加

ツィートの取得で最も気をつけなければならないことは、ツイートの重複です。重複が発生すると、MySQLのレコードをPHPで読み込んだときに、同じツィートが表示されてしまいます。そのタイムラインを見たユーザーは、一気に白けてしまうでしょう。

ステータスIDの活用

tweet_add_delete2

そこで登場するのが、ステータスID(俗称でTwitter ID)の活用です。2枚目の画像は、ステータスIDとその引数を活用したツィートの取得を表した概念図です。

ステータスIDとは546980877272502274のことを指し、ツイートの1つに付けられている認識番号のようなものです。下記のつぶやきは、https://twitter.com/echizenya_yota/と、546980877272502274を組み合わせて出来上がっています。

概念図の箇条書き

概念図の注意点を箇条書きにしておきます。

  • a.アクセス時にステータスIDを取得する
  • b.2回目以降は、REST APIのページ処理関連パラメータの引数(since_id)を指定する
  • c.since_idとは、指定したステータスIDより大きい(より最近の)オブジェクトを返すための引数
  • d.1回目の取得は、since_idを指定しないため、条件文(if文)で処理を分ける

概念図では説明の便宜上、id番号を連番にしています。ですが、実際にはGET statuses/user_timelineで取得しても連番にはなりません。

クエリ文と条件分岐(if文)の作成について

aからdの注意点で、頭をひねらなければならないのが、bとdです。

bでは、データベース内から、最も大きなステータスIDを持つレコードを見つけるクエリ文を作成する必要があります。

dでは、TwitterAPIを呼び出した回数(誰かがページにアクセスした回数)が、1回目であるかそうでないか、条件判定をしなければなりません。

次回(新しいタブで開く)は、その2点を踏まえたプログラムを作成します。

〔参考サイト〕