スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

TwitterのAPI ver.1.1 コールバック後の処理が遅い場合

これだけ書いてもなんのことかわからない人が多いと思うが、とりあえずわかる人向けに。

Twitter API1.1でアクセストークンを手に入れてコールバックのファイルを呼び出す。
その時になるべく早くコントロールを自分のサイトに持ってきたい。

つまり、下図の画面が出てきて認証が終わった後、
1.png

下図の画面が出てきて「しばらくお待ちください」状態になるのだが、
2.png

この画面が異常に長く表示されることがある。
これがあまりにも長いとユーザーとしては「あれ?固まったのかな?」という印象をうけるので、なるべく早くこのページを抜けて自分のサイトに戻ってこさせた方がいい。

ではなぜこの画面が長く表示されることがあるのか?
この画面の表示時間は指定したコールバックファイルの処理時間に影響を受けている。
例えばコールバックファイル(callback.php)でフォロワー全員のプロフィールをDBに挿入するという処理をするとしよう。
もしフォロワーが1人しかいないユーザが認証した場合はこの処理に時間はかからない。だが、フォロワーが1万人いるユーザの場合、単純に計算すると1人の時の1万倍の時間がかかる(正確な試算ではないが)。
フローにするとこんな感じ。

1. twitter認証画面
2. 認証完了画面 -> callback.phpがこの画面上で実行される(1万人分の処理)
3. callback.phpが終了した後の画面

上記を避けるためにはcallback.phpでは重い処理を請け負わず、すぐに次のファイルにリダイレクトしてしまうのがいい。
ただ、PHPでheader関数を使ってリダイレクトしても効果はないようで、callback.phpにjavascriptでonloadをつかったリダイレクトをすると意図する処理になる。フローはこうなる。

1. twitter認証画面
2. 認証完了画面 -> callback.phpはアクセストークンなどを取得するだけにしてindex.phpにリダイレクト(javascript)
3. index.php ->結局処理には同じ時間かかるが 「しばらくお待ちください ###/10,000」などの画面を表示できる

コメント

コメントの投稿

非公開コメント

PR

PR

プロフィール

何でも書くman

Author:何でも書くman
思ったことや備忘録など、とりあえずなんでも書きます。IT系のことや趣味、生活に関わることなども。

ページの先頭へ戻る
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。