• ベストアンサー

PHPのプロセス滞留について

PHPで会員用ページにPostgresを通してログイン後、DB検索ができる システムを作っています。 ログイン後、会員の方がログアウトせずにブラウザを 閉じた際にプロセスが滞留し続けDBの処理が重くなっていきます。 ブラウザを閉じた時点でログアウトとみなすコードはありますでしょうか。

  • PHP
  • 回答数1
  • ありがとう数0

質問者が選んだベストアンサー

  • ベストアンサー
  • Dpop
  • ベストアンサー率51% (279/544)
回答No.1

コード。とは違いますが。 利用者がページを閲覧した時に、ユーザー名と時刻を記録し、 その時刻が、例えば過去1時間以前の時刻であれば、ログアウトを実行する。 要するに、セッション管理ですね。 OKWebもセッション管理を行っていますので、特定時間以上、 ページ遷移がないと、ログアウトと見なしているみたいですね。

nagaable
質問者

補足

time と session_unset を組み合わせて なんとかやってみたいと思います。 ありがとうございました。

関連するQ&A

  • ログアウトのプログラム(phpファイル)

    phpファイルでログインして、ブラウザにログイン出来たの表示が出るようにしています。ここ から、目的のページに行けるようにリンクを貼っています。 しかし、ログインしたけど、直ぐにログアウトしたい場合、ブラウザからリンクで再びログイン 画面に戻るには、この同じphpファイルにどのようなプログラムを書けば良いか教えて下さい。

    • ベストアンサー
    • PHP
  • PHPでのアクセス制限で持続させるには?

    お世話になってます。 今回、アクセス制限プログラムをPHPで制作しています。 これは PHPとMYSQLを連動させているものです。 ユーザーの新規登録、ログイン構造まではWEBで検索しながら自力でやりました。 ログインしたあと ページを見るのはいいのですが 直接アクセス(ログインを通過しずにアクセスした)されるといけないので、拒否をさせたいです。ログインされていればログアウトされる(ブラウザが閉じられる)までそのサイトのページを見れるようにしたいです。 またそれをログアウトしたら、キャンセルできるようにしたいです。 簡単に言うと ログイン→通過→メンバー用ページを表示 直接アクセス→エラーを表示(ログインに戻ってもらう) ということです。 お答えいただける方 どうぞよろしくお願いします。

    • ベストアンサー
    • PHP
  • [PHP]セッション破棄について

    はじめまして。 phpを始めて1週間の初心者です。 現在、ホームページでログイン処理とログアウト処理をphpのセッションを使って作成しています。 今回質問させて頂くのはログアウト処理についてです。 ログアウト処理をでセッションを破棄する際に http://oshiete1.goo.ne.jp/qa3224862.html を参考にして下記の処理を行わせています。 -------------------- logout01.php -------------------- <?php session_start(); $_SESSION = array(); if(isset($_COOKIE[session_name()])){setcookie(session_name(),'',time()-4200,'/');} session_destroy(); header("location: http://~トップページのURL~/"); ?> -------------------- 確認をしたところ、ログインしたユーザの情報は削除されているようでした。 また、http://oshiete1.goo.ne.jp/qa3224862.htmlを参考に下記のようなログアウト処理も行わせてみました。 -------------------- logout02.php -------------------- <?php session_start(); unset($_SESSION['access']); header("location: http://~トップページのURL~/"); ?> -------------------- 同じく確認したところ、ログインしたユーザ情報は削除されているようでした。 -------------------- 環境 -------------------- <サーバ> 【OS】 windows XP(テスト環境)、CentOS 5.2(公開環境) 【PHP】 5.2.6 【Apache】 2.2 <クライアント> 【OS】 windows XP 【ブラウザ】 Firefox 3.0.8 IE 7 -------------------- -------------------- 質問 -------------------- (1)logout01.phpとlogout02.phpの違いは何でしょうか。 (2)「unset($_SESSION);」は使用すると「$_SESSION」が使えなくなるとのことですが、  それはphpを再インストールしない限りは使えなくなるということでしょうか。  それとも、ブラウザを再起動すれば使えるという意味でしょうか。 (3)「unset($_SESSION);」と「unset($_SESSION['access']);」では何が違うのでしょうか。 (3)セッションを使用するとサーバ側にセッションIDを保存したファイルが保存され、  クッキーがクライアント側に保存されるとのことですが、logout01.phpとlogout02.phpを  実行した場合、サーバ側のセッションIDを保存したファイルとクライアント側のクッキーを  保存したファイルは削除されているのでしょうか。 (4)セッションの有効期限を指定していないため、logout01.phpとlogout02.phpを実行せずに  ブラウザを終了させた時もログインしたユーザ情報は削除されているようでしたが、  この場合もサーバ側のセッションIDを保存したファイルとクライアント側のクッキーを  保存したファイルは削除されているのでしょうか。 初歩的な質問で申し訳御座いませんがよろしくお願いします。

    • ベストアンサー
    • PHP
  • phpでのログアウトについて

    phpで会員制サイトの制作を勉強しています。 データベースへはPDOで接続しています。 MySQLデータベースを使用しています。 セッション変数($_SESSION["email"])の有無を使用したログイン方法を使用しています。 セッション変数の破棄(ログアウト処理)について質問があります。 前提として、現在会員制サイト制作の勉強で「ログアウト後は必ずTOPページに遷移する」という形にこだわっています。 ちなみに現在使っているログアウトの方法は 1、 全ページ共通の、ページ上部に表示されるメインメニューに <form method="post" name="logout" action="toppage.php"> <input type="hidden" name="logout" value="true"> <input type="submit" value="ログアウト"> </form> でログアウトボタンを作成し、 ログアウトボタンが押されたらtrueという値を持った$_POST["logout"]を トップページ(toppage.php)に送る。 2、トップページ(toppage.php)に画面遷移させ、 $logout = filter_input(INPUT_POST, 'logout'); if($logout=="true"){ unset( $_SESSION["email"] ); } でもしも$_POST["logout"]がtrueなら セッション変数$_SESSION["email"]を破棄する というプログラムによりログイン・ログアウトを管理しています。 きちんと動いてはいるのですが、不満が1つあります。 願わくばログアウトボタンをformタグのsubmitで作るのではなく、 <a href="toppage.php">ログアウト</a> とリンクを使用して作成したいです。 このようにリンクを使用する場合、遷移後のTOPページ(toppage.php)でセッション変数$_SESSION["email"]を破棄するには、どのようなプログラムを記述すれば良いのでしょうか? ネットで調べたりもしましたが、ほとんどのサイトで紹介していたものは、 ログアウトリンクをクリックすると、ログアウト処理確認専用の画面(「ログアウトしました!」とだけ書かれたような画面)に遷移し、セッション変数を破棄するものばかりでした・・・ 私個人としてはログアウト処理が完了した旨を報告する画面をワンクッション置くのは、あまり実用的ではない気がして好みません・・・ 巷にあふれているようなサイトではログアウトボタンをクリックすると TOPページに遷移するようなサイトばかりなので、 phpを使用した場合、どうやったらそのような仕組みになるのか考えた上で、 今のへんてこなログアウト処理プログラムに至りました。 ごちゃごちゃしていないもっと良いログアウト処理プログラムはないでしょうか? ご回答、よろしくお願いします。

    • ベストアンサー
    • PHP
  • PHP動作中のプロセスはどうなっている?

    現在PHPで動くWebアプリを作成中です。 このPHPの動作は約1分動作します。 このPHPを動作中にブラウザを閉じたり、別のページに遷移したり、またはブラウザの「中止」ボタンや「更新」ボタンを押すと、実行中のPHPのプロセスってどうなってしまうのでしょうか? これはブラウザ側からPHPの動作を停止せよという命令が行くのですか? それともPHPは最後まで実行されて、その結果のレスポンスをブラウザが受け取らないだけなのでしょうか? やりたいことがあるのですが、SQLiteはデータベースの同時書き込みができないので、他のPHPがそのデータベースを書き込む前にファイルロックと同じ要領でファイルをロックし、書き込み終了したらファイルロックを解除する、というのをやりたいのですが、書き込み中にPHPのプロセスが停止してしまったらファイルがロックしたままになるかと思って質問しました。 どうぞよろしくお願い致します。

    • ベストアンサー
    • PHP
  • PHPにてHTMLページ表示とは別プロセスで処理を実行したいのですが

    PHPにてHTMLページ表示とは別プロセスで処理を実行したいのですが PHPにて動的にページ生成する場合には内部の処理が全て完了して全てを読み込まなくては ページが表示されないと思うのですが、一旦ページを表示させて処理を継続して実行する ことはできないでしょうか? その処理はページの表示には関係ないのでajaxのようなページを表示後に新たに表示させると いった事は必要ありません、単にページ表示後にファイルを読み込んでDBに格納する処理を 行いたいのですが方法はないでしょうか?

    • ベストアンサー
    • PHP
  • php cookieを利用してのログアウト処理について

    現在PHP、MYSQLを利用し会員制のサイトを構築中です。 COOKIEにてログイン情報を保持しています。 そこで、ログアウト処理に苦労しています。 ログアウトボタンを押すことにより setcookie('userid', '', time() - 36000); 上記の処理を行うことにより、cookieは削除されるのですが、他ページへ移動すると、再度cookieが生成されてしまいます。 こういった場合、どのようにすればよろしいのうでしょうか? ご教授頂ければ幸いと存じます。

    • ベストアンサー
    • PHP
  • 再起動する事無くプロセスを消したい

    PostgreSQL7.4.5 + FC4という環境でDBサーバを運用しています。 夜間にデータの切換などを行う際に、drop databaseをしたりするのですが、 その際に ERROR:source database "DB名" is being accessed by other users のエラーが出て処理が中断してしまいます。 これはpostgresプロセスがidle状態で残っている為なんですが、 postgresを再起動する事無く、drop databaseが出来る状態にしたいです。 (ちなみに、この処理を行っているユーザはpostgresユーザではありません) どなたか、良い策があればご教授して頂けますでしょうか。 以上です。宜しくお願い致します。

  • PEAR::DBでプロセスは取得できる?

    お世話になります。 PHP5でPEAR::DBを使ってpostgresに接続しています。 $conn = pg_connect(略); を使えば $pid = pg_get_pid($conn); でバックエンドのプロセスIDが取れます。 ですが、PEAR::DBにも同じ機能を持つメソッドなどがあるのでしょうか? よろしくお願いします。

    • ベストアンサー
    • PHP
  • 【PHP + MySQL】ログインの

    ただいまPHP + MySQLにて、会員ログインシステムを導入した会員サイトを運営しておりますが、ログイン時にまったく別のユーザーでログインしてしまうという現象がおきて困っております。 たとえば、Aというユーザーが自分のIDとパスワードを使ってログインすると、ごく稀にBというユーザーでログインされてしまうということです。何かの間違いかと思い、会員データの編集画面を表示してもBの会員情報が表示されてしまい、ログアウトするまで、Bというユーザーでログインされているという状況です。 ID、パスワードの重複かと思いそちらもしらべましたが、 AはID、パスワードともに数字のみ BはIDが英数字 パスワードが数字 になっており、重複や入力ミスではないようです。 ちなみにWORDPRESSを用いてサイト構築を行っています。 ログインの処理自体はWordpressnのプラグインなどは用いていません。 一度キャッシュを制御するプラグインを用いて、ログインした状態のページをキャッシュしてしまう事はありましたが、そちらは今回とは関係ないのではないかと思っております。 また、現在そのプラグインは使用しておりません。 ログイン処理などを何度も見直しましたが、 間違ってログインされるような事は起こりえないと思うのですが、 何かサーバーの問題などでこのような事は起こるのでしょうか? 大変困っておりまして、お答えいただけるととてもありがたいです

    • ベストアンサー
    • PHP

専門家に質問してみよう