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

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

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

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

PHP

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

Q&A

解決済

1回答

1067閲覧

header関数を実行し、apacheのアクセスログに記録されない

JanTh1989

総合スコア87

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

PHP

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

0グッド

1クリップ

投稿2021/06/21 10:32

編集2021/06/22 00:54

質問

PHPでheader関数を用いて、画面遷移を実行した処理が記録されているのですが、アクセスログにはGETログが存在しませんでした。
どういったことが原因としてありますでしょうか?

LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined

コード

PHP

1//確認画面(confirm.html(PHP)) 2 3if (前画面の入力データ不足チェック){ 4 エラー画面遷移 5} 6 7// 次画面遷移処理 8$next = filter_input(INPUT_POST, "next"); 9if (isset($next)) { 10 登録API実行 11 登録メール送信 12 13 $path = "thanks.html" 14 if (UAのスマートフォンチェック){ 15 $path = "sp/".$path; 16 } 17 logsave('REDIRECT','TO:'.$path); 18 header("Location: " . SITE_URL . $path); // SITE_URLは"https://ドメイン/" 19} 20 21前画面入力データの表示設定処理

完了画面については、ほぼ静的画面になります。

詳細

当初質問に至った経緯(動作)については以下になります。

画面     ・確認画面     ・完了画面 理想動作(処理)     確認画面         実行ボタン(submit)押下             ・登録APIを実行             ・完了画面にheader関数で遷移実行      完了画面         ページ表示 障害    登録APIが2度実行している アクセスログ調査結果    POST 確認画面    GET 確認画面     ←本来"GET 完了画面"になる想定。 上のPOSTとは1分程度の時間差がありました。    POST 確認画面    GET 完了画面 処理ログ調査結果    header関数実行の1行前の処理で、完了画面へのheader関数実行の旨が記録されている。    最初の"POST 確認画面"後にも、その記録はされており、header関数を実行したのは間違いない認識。

調査結果から現在の考察結果

タイムアウトや読み込みが終わらないなどの現象があったのでは無いかと考えております。
アクセスログ調査結果の2行目に、"GET 完了画面"が出なかったのは、読み込み待ちやタイムアウトなどを予想しております。
待ちきれず、またはタイムアウトし、ブラウザなどの戻るボタンで、一度確認画面に戻り、再度実行ボタンを押下したことで、2度の"POST 確認画面"で、登録APIが2度実行されたのでは無いかと考えています。

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

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

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

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

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

m.ts10806

2021/06/21 11:10

実際のコードを提示してください。
JanTh1989

2021/06/22 00:53

実際のコード、の粒度が判断できず恐縮ですが、一旦コードは追記いたしました。
m.ts10806

2021/06/22 01:12

他者がコピペで状況再現できる程度には必要です。
guest

回答1

0

自己解決

本件については、タイムアウト、読み込みが終了しない、の方向で内部で話が進みました。
こちらは、元々既にリリースしているもので、基本的には正常動作をしておりました。
その上で、今回の動作が突飛に1名発生しておりましたので、ログ情報などからこの結論に至りました。

補足
API2度実行については、API実行を記録して、同セッションで2度しない形で補正することにしました。

投稿2021/06/24 01:38

JanTh1989

総合スコア87

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問