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

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

新規登録して質問してみよう
ただいま回答率
85.48%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

2回答

9603閲覧

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

Smar

総合スコア40

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

2グッド

0クリップ

投稿2016/07/01 02:41

編集2016/07/01 03:26

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

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

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

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

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

PHP

1session_start(); 2$_SESSION['test']++; 3$db = mysqli_connect("localhost", "○○○", "○○○", "○○○"); 4$sql = "INSERT INTO ~"; 5$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)"
tanat👍を押しています

気になる質問をクリップする

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

masaya_ohashi

2016/07/01 02:58

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

2016/07/01 03:04

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

2016/07/01 03:12

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

2016/07/01 03:28

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

回答2

0

ベストアンサー

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

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

投稿2016/07/01 03:46

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Smar

2016/07/01 04:04

コメントありがとうございます。 上記ソフトは見当たらなかったのですが、一通り常駐系のソフトを消した後に試してみましたところ解消されました…。 ブラウザに限らずブラウザのように別で動くようなこともある、ということですね…。 勉強になりました、ありがとうございます。 ですが、記事にもある通り、 他社が同じような状況でサイトに来た際に同じ現象を引き起こす、ということですよね…。 こちらの対処がなかなかに厄介そうですね。。。
退会済みユーザー

退会済みユーザー

2016/07/01 04:11

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

0

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

投稿2016/07/01 03:04

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Smar

2016/07/01 03:24

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問