Webシステムのプログラムで、ログインしていない状態なのに、なぜかデータベースの参照を行っていました。
index.phpにアクセスされると、ログインしていなければlogin.phpに遷移するようになっています。
ログインしていれば、login.phpには遷移せず、index.phpの実行を継続し、データベースの参照を行います。
ログインしている/していないの判定を行ない、ログインしていなければ、header()関数でLocationを指定して遷移しています。
<?php if ($login === false) { header("Location: ./login.php"); }
遷移はしていますが、以降のコードの実行を行ってから遷移しています。
photo credit: Daniel M. Hendricks PHP Programming for Windows via photopin (license)
exit()関数が必要
ソースコードを見ていて思い出しましたが、header()関数で遷移する場合、exit()関数を書かないと以降のコードの実行が継続してしまいます。
<?php if ($login === false) { header("Location: ./login.php"); exit(); }
Manualにも、書かれています。
<?php header("Location: http://www.example.com/"); /* ブラウザをリダイレクトします */ /* リダイレクトする際に、これ以降のコードが実行されないことを確認してください */ exit; ?>
何年も前に作成されたシステムで辞めた同僚のから引き継ぎましたが、同僚は気がついていなかったということになります。
無駄なデータベースの参照が減って、ほんの少しだけでしょうが、速度は改善しているはずです。