質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

87.95%

ブラウザで複数回ページが読み込まれているような動きをしていて困っています。

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 6,199

score 40

いつもお世話になります。

仕様言語はPHPで単純にMySQLのテーブルへINSERTを一度行うのみ、という非常にシンプルな内容です。
そこで今までこういったことはなかったのですが、ページをブラウザでロードした際に一度開いただけで複数回INSERTが実行されてしまうという現象が起こり困っております。

当初シンプルなソース内容ではなかった為、別の要因かと思ったのですが、
最終的にただINSERT一文だけ、実行はmysqli_query関数のみ、という状態でも起こるということがわかりました。
ブラウザも始めにgoogle chromeで試していた為、ブラウザ依存の現象かと思ったのですが、firefoxでも同現象が確認できました。

また、100%起こる現象ではなく、新規でタブを開きアドレスを貼り実行、とすると起きたり起きなかったりします。
一度開いた後の更新ボタンやF5キーでのリロードでは起こりにくいような印象がありますが、そちらも0%ではございません。
一度にINSERTされる数は1つ、または3つのことが多いです。
(稀に5,6個入ることもあります…)

タイミングを調べる為にタイムスタンプとSESSION変数で調べてみたのですが、結果も不思議なもので、

session_start();
$_SESSION['test']++;
$db = mysqli_connect("localhost", "○○○", "○○○", "○○○");
$sql = "INSERT INTO ~";
$rs = mysqli_query($db, $sql);

上記のように+1していき、その値をINSERTしてみたところ、例えば以下のようになりました。
(この際、一気に5つデータが入りました)

  • SESSIONの値, タイムスタンプ
  • 1, 2016/7/1 10:51:20
  • 2, 2016/7/1 10:51:20
  • 1, 2016/7/1 10:51:24
  • 1, 2016/7/1 10:51:25
  • 2, 2016/7/1 10:51:25

5つデータが入ってはいるが、SESSIONの+1は5回行われているわけではなく、
1と2のみでその際のタイムスタンプも時系列的には前後している感じ…?でしょうか…。
また、この際SESSION変数は初期化してない為、初回実行は当然エラーが出ますが、画面上の表示は初回実行時に出るエラー表示が出ますので、
実際にリロードのようなものが5回走った、ということでもなさそうです。

ソースは上記の5行で全てです。
環境としまして、ローカルのXAMPPでもレンタルサーバー上でも同じ現象が起こります。
mysqliでもpdoでも無関係に起こります。

タイミングもバラバラでSESSION変数を変えることでストップかけることもできない状態でかなり困っています…。
同現象を経験された方、解消された方おられましたらお力をお貸しください…。
よろしくお願い致します。


[追記]
フレームワークなどは使用しておりません。


[追記:アパッチログ]

127.0.0.1 - - [01/Jul/2016:12:19:20 +0900] "GET /test/ HTTP/1.1" 200 273 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36"
127.0.0.1 - - [01/Jul/2016:12:19:21 +0900] "HEAD /test/ HTTP/1.1" 200 - "-" "Mozilla/5.0 (X11; Linux x86_64; rv:10.0) Gecko/20150101 Firefox/44.0 (Chrome)"
127.0.0.1 - - [01/Jul/2016:12:19:21 +0900] "GET /test/ HTTP/1.1" 200 273 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:10.0) Gecko/20150101 Firefox/44.0 (Chrome)"
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • masaya_ohashi

    2016/07/01 11:58

    そのソースが仮にtest.phpという名前であったとして、そのファイルに直接HTTPでアクセスして起きている現象ですか?例えばなんらかのWebフレームワーク(CakePHPやFuelPHPやLaravelやZendFrameworkや)で呼び出されるのがtest.phpですか?

    キャンセル

  • Smar

    2016/07/01 12:04

    コメントありがとうございます。
    追記させて頂きました。
    Webフレームワークなどその他一切使用しておりません。
    よろしくお願い致します。

    キャンセル

  • tanat

    2016/07/01 12:12

    apacheのアクセスログでも複数回アクセスされたことになっていますか?

    キャンセル

  • Smar

    2016/07/01 12:28

    アパッチのログを追記させて頂きました。
    あまり読み慣れていないもので申し訳ございません。
    XAMPP上で動作、でのログになります。
    他ブラウザは起動せずchromeのみ、一度実行とした際のログです。
    無知ですいません、chromeのはずがFirefoxと記載されていたりするようなのですが、こういうものなのでしょうか…?
    よろしくお願い致します。

    キャンセル

回答 2

checkベストアンサー

+4

Apacheのログが変なことになっていますね。。。
ローカルで何か変なものが動いている気がします。

ぐぐってみたらそれっぽいものが。
Google Chrome から複数のリクエストが来る –原因判明–

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/07/01 13:04

    コメントありがとうございます。
    上記ソフトは見当たらなかったのですが、一通り常駐系のソフトを消した後に試してみましたところ解消されました…。
    ブラウザに限らずブラウザのように別で動くようなこともある、ということですね…。
    勉強になりました、ありがとうございます。

    ですが、記事にもある通り、
    他社が同じような状況でサイトに来た際に同じ現象を引き起こす、ということですよね…。
    こちらの対処がなかなかに厄介そうですね。。。

    キャンセル

  • 2016/07/01 13:11

    アプリまで合致じゃなかったですか。なんか共通のライブラリでもあるんですかね。
    やっかいです。。。
    こんなアプリの対策は自身のサイトで行っていないので、ちょっとログ見てきます^^;
    勉強になりました。

    キャンセル

+2

・chromeの拡張機能で、複数回読み込むことになるのがちらほらある。
・href="" の不具合(chrome)
・存在しないファイルを読みこもうとしたときに、そのページを開くようになっている
faviconとか

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/07/01 12:24

    コメントありがとうございます。
    拡張機能も気になりましてシークレットモードや他ブラウザも試してみたのですが、同じ反応でした…。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 87.95%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る