[愚痴]twitter REST API[orz]

ご無沙汰しております。

表題の件について、ひとつ愚痴を・・・

自分自身のtwitterアカウントのusertimlineを、「REST API」を使用しcronで定期的に取得していたところ・・・

取得が終わらず取得プログラムのプロセスが、ずっと残っているではありませんかorz

この原因を色々調べてみたけど良く分からないo…rz

プログラムにどこまで実行できたのかをlogに出力したところ、「REST API」にリクエストを投げ(file_get_contentsを使用)て返ってこないことがわかりました。

本当に返ってきていないか調べるためにfile_get_contentsではなく、fopenで接続をしてからfreadで1バイトずつ、ファイルに出力したところ・・・jsonデータがファイルに出力されていました。

と言うことは?どういうこと??

feof関数のマニュアル以下抜粋

返り値
ファイルポインタが EOF に達しているかまたはエラー (ソケットタイムアウトを含みます) の場合に TRUE 、 その他の場合に FALSE を返します。

注意
警告
fsockopen() でオープンした接続がサーバーによって閉じられていない場合、feof() はハングします。回避策は以下の例を参照ください。

“オープンした接続がサーバーによって閉じられていない場合、feof() はハングします。”

プロセスが終わらず残っていたのは、ハングしてたからか?というメボシをつけてみた・・・

で、twitterなので、freadで固定バイト数ずつ読み込んで結合し、その文字列がjson_decodeでfalseを返さない場合、while文を抜けるようにしてみたところ上手くこの処理で抜ける場合の「REST API」のリクエストがあった、これで十中八九『EOF』がtwitterのサーバーから送られていないと思われ・・
※上記のwhile文を抜けるもう少し詳しい条件としは、!feof($fp)の場合で、json_decode($str)がfalseではない場合にbreakです。

結局、REST APIのリクエストが届くサーバーが、EOFを返すサーバーと返さないサーバーがあるということで、どうもこの返さないサーバーにあたることが多いのが問題・・・
ていうか、twitterさんeof返しておくれ・・・

スポンサーリンク

[facebook]ページのaccess_tokenが・・・[愚痴]

今日はまた別の件で・・・

先週くらいから起きていた現象でっす。

facebookのアプリを作って、facebookのページを管理すべくゴリゴリ書いたんですが
昔から登録のされているfacebookアカウントユーザーは、facebookページのアクセストークンを取得すると
その、アクセストークンの有効期限が、「受け取らない」に設定されます。

で、最近(時期は不明だけど、昨日今日のアカウントは必ず?かな)登録のあったアカウントユーザーは、
アクセストークンを取得しても、2時間ぐらいが有効期限として設定される(さらに、17:36に認証をしたとすると認証期限は、19:00とかだったかな・・)

ユーザーによって、有効期限が違うところを見ると、何かしらの設定のポイントがあると思うのだが、、、、
違いがまったくわからんorz

で、色々調べたら、このbugレポートが、近いかなと・・・
https://developers.facebook.com/bugs/524288344273306
(検索は、access_token expire)

※アクセストークンの再発行は60日になるよなapiを投げているが、これが2時間のものしか返ってこない・・・

アクセストークンの有効期限の調べ方は
https://developers.facebook.com/tools/debug
こちらのURLへアクセスして、テキストボックスに、調べたいアクセストークンを入力してデバックボタンを押すだけで、
テキストボックスのしたあたりに、アクセストークンの情報が表示されます。

スポンサーリンク