• 締切済み

ajaxとphpでapiのデータ取得

上手にお伝えできるか不安ですが、以下の事象の原因で考えられるものがありましたら、アドバイスいただきたいです。 [処理内容] js(ajax)でphpをたたいて、GAのapiに接続、ページビューを取得して その取得内容もとにphpで静的ファイルを生成(jsonやhtml)して、任意の箇所で表示させています。 アクセスランキングのようなものになります。 ---------------------------------------------------- jsでphp呼び出し→phpでGAにアクセス→GA→phpで受け取る→jsonやhtml生成 ---------------------------------------------------- [気になる事象] GAからのデータの取得やjsonの生成は概ねうまくいっているのですが、時にデータが取得できない時があります。 何故かphpファイルを更新する(ソースに改行を加えただけ)と正しいデータが取得できたりします。 そんなことが動作に影響するのかわからないのですが、また1日後とかにデータを取得して表示させようとすると、 phpファイルを更新しない限り前回取得した状態から更新されなくなります。 キャッシュみたいなものが介在するのかわからないのですが、ajaxの部分の記述でcashはfalseとしています。 ちなみにGAの管理画面ではページビューが取れているので、apiとphpの間が怪しいといえば怪しそうな気もしています。 尚、静的ファイル(jsonやhtml)のタイプスタンプの更新は、js(ajax)にアクセスする度に正しく行われている為、 それらのファイルの生成そのものは問題ないと思われます。 拙い説明で恐縮ですが、 どうぞよろしくお願いいたします。

みんなの回答

  • pajama7
  • ベストアンサー率50% (3/6)
回答No.1

実際の挙動を見れないので、問題の切り分けを考えて、可能性を考えてみました。(ズバッと答えられなくてすいません…) まずGAのAPIから正しく情報が取れないということですが、正しく情報が取れないと言ってもいくつかパターンがあると思います。 HTTPにはスタータスコードがありますので、304が返ってくる(キャッシュの可能性)、200が返ってくる(正しく情報は取れているが内容が更新されていない)、500系エラー(リクエストに失敗した)などのパターンです。 ファイルのタイムスタンプはphpからファイルオープンなりをしたら更新される気がするので、GAのレスポンスがどうなっているかが、まず一つ目のキーになるかなと。 500の場合はリトライするなりすれば良いと思いますし、304が返ってくるなら回避する方法を探る、200の場合は同じレスポンスが返ってくるようなリクエストパラメータになっていないか(例えばずっとデータの絞り込みを表す日付パラメータdateとかがリクエストのたびに一緒だったりしないかとか)を見てみるといいかもしれません。 次に作成している静的ファイル自体が新しい情報に書き換わった状態で、ブラウザからみたときに情報が変わらないというケースです。 これはブラウザのキャッシュが影響してると思いますので、キャッシュの影響を受けないプライベートブラウジングなどのブラウザ機能を使って確認するとすぐ分かります。 その場合は、If-Modified-Sinceなどを調べてみると解決できるかなと思います。 すべて試したよという話であれば、お力になれずすいません。

Search_tmp
質問者

補足

アドバイスありがとうございます! 大変ありがたいです。 そして調査が緩くてすみません。 ステータスコードを表示してみたところ、200でした。 ちょっと思い込みがあったのですが、 GAのデータが取れているとお伝えしたのは、GAのリアルタイムの取得値の部分で、 私が取得しているデータは日付を指定して取得している形なので、「リアルタイム」とは異なるような気がしてきました。 実際にGAの側でリアルタイムではない当日の計測値を見るとまだ0のままでした。 GA側の当日のデータ(リアルタイムではないです)として表示されるところの数値が表示されるまでの時間は、 環境によってけっこうタイムラグがあるのでしょうか。(ご質問の趣旨がズレてすみません) 一応、復数の環境で試しているのですが、一方はけっこう早くて、もう一方は1日後とかです。 環境次第で比較的短時間で取れるケースもあれば、1日後みたいなケースもあったりするとすれば、この200という状態も致し方ない事かなと思いつつあります。 仮にそんなケースがあるのなら、当日のデータを表示するのはやめた方が良さそうな気がしています。

すると、全ての回答が全文表示されます。

関連するQ&A