• ベストアンサー

PHPのセッションファイルのロックについて

PHPにて通常のfileにてセッションを利用するとき セッションファイルはセッションを使用するページが終了するまで ロックされていたりしますか? ページ A セッション開始 → 20秒かかる重い処理 → このあと$_SESSION["hoge"] = 1; ページB セッション開始 → すぐに$_SESSION["hoge"] = 2; ページAを読み込み始めて10秒後にページBを読み込み開始した場合 $_SESSION["hoge"] は 1になりますか2になりますか?

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

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

  • ベストアンサー
  • t_ohta
  • ベストアンサー率38% (5079/13273)
回答No.1

ページBはページAの処理が終わるまで待ってから処理を開始します。 なので、最終的には 2 が記録として残る。 ここが詳しく説明を書いてくれてますね。 http://unsolublesugar.com/20121103/113321/

muuming2001
質問者

お礼

ありがとうございます。 質問投稿した後、簡単にテストできると気付き、テスト実行してみました。 確かに記載いただいた動作となりました。 詳細ページのご紹介ありがとうございました。

関連するQ&A

  • session_start();について

    以下のような処理を行なっております。(a.php~e.php) 入力情報保持のため、セッションを利用しております。 そこで、a.php~d.phpの全てのページの最初に session_start(); を記述しております。 ワーニングで 「Notice [PHP]: A session had already been started - ignoring session_start()」 といった旨のメッセージが出るのですが、サイト内でセッションを利用する場合、 最初(この場合だとa.php)だけに session_start(); を記述すればよいのでしょうか。 セッションを利用するページ全てに記述するという認識でいたのですが・・・ 御教授頂ければと思います。 a.php 情報ページ セッションの開始 b.php 入力情報チェック ↓ c.php 入力情報確認ページ d.php 入力情報登録 セッション破棄 e.php 登録完了ページ 環境 phpバージョン4.3.11 xoopsにて使用

    • 締切済み
    • PHP
  • セッションIDがクッキーに渡るタイミングについて

    セッションIDが、クライアントPCのクッキーに書き込まれるタイミングについて、 教えてください ▼セッションを開始したとき ・session_start(); ▼セッション変数に、何かを格納したとき ・$_SESSION["HOGE"] =○○ ▼PHPの処理が終了したとき ▼セッションが終了したとき ▼それ以外

    • ベストアンサー
    • 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 不要なセッションファイルの対応方法について

    セッションファイルの管理方法について、どなたかご教授願います。 現在セッションファイルを生成し、ログアウト処理時に、 session_destroy()関数を使用しています。 通常にログアウト処理が行われれば、良いのですがブラウザ事態を 閉じた場合、セッションファイルは残ったままになります。 PHPやApacheの設定などで簡単に管理できる方法は無いものでしょうか? なるべく、バッチやモジュールを追加しない形で進めていきたいと思っています。 以上です。

    • 締切済み
    • PHP
  • PHPのセッション終了について

    PHPのセッション終了について http://c-brains.jp/blog/wsg/08/05/22-193020.php こちらのサイトでPHPを勉強しています。 セッションについてなのですが、セッションの開始と関数の働きはつかめたのですが、セッションの終了について不明な点があります。 <?php // セッションの開始 session_start(); // セッション変数の初期化 $_SESSION = array(); // セッションファイルの削除 session_destroy(); ?> この部分なのですが、セッション変数の初期化のみの記述では何がいけないのかが分かりません。 $_SESSION = array(); のみの記述で試してみたところ、$_SESSION に含まれていたキーを呼び出しても中身を出力しなかったので、ちゃんと中身は消えたと思うのですが、この場合、session_destroy()を実行する意味はあるのでしょうか? 何卒ご教授いただけますようお願い致します。

    • ベストアンサー
    • PHP
  • PHPのセッション変数について

    ページの構成が代わり、A-B-Cと順番だったのをA-Cと変更しました。 AからCリンクにとぶように設定したのですが、リンクを変更していてもBのページに行ってしまいます。 このプログラムを作った人に聞きましたところ、 if{session("user_sbt") というセッション変数で、新しく作られた画面のところで何もセットしていなければ初めの画面(B)に戻るというプログラムが走っているそうです。作った人に直してもらえたら良いのですが、事情で日本にはいないので、わかる方教えてください。よろしくお願いします。 PHPファイルの上部には session_start(); require_once("../_common/head.php"); require_once("../_common/mysql.php"); というセッション変数が記入されています。

    • 締切済み
    • PHP
  • phpのセッションについて質問です。

    今、for文を使ってsession変数に値を入れて行く処理を作っております。そのためにセッション配列を使おうと考えておりますが、使い方が分からないので教えてください。一応、自分なりに書いてみたのですが動きませんでした。処理的には、一つ目のfor文で値をsessionの配列に一つずつ入れていき、二つ目のfor文でその格納したのを表示するようにしたいです。 <?php session_start(); for($a=1;$a<10;$a++){ $_SESSION['no'][$a]=$a; } for($b=1;$b<10;$b++){ print("こんにちわ".$SESSION['no'][$b]); } ?> ご回答のほどをよろしくお願いします。

    • ベストアンサー
    • PHP
  • php session cookie 概念

    いつもお世話になっております。 php&mysqlにて会員制サイトを作成中です。 sessionを用いて期待する動作は実現できたのですが、どうしても理解できないことがあります。 sessionについて色々と調べますと、 1)サーバーサイドで処理する方式(URIに埋め込む) 2)クライアントサイドで処理する方式(cookieに渡す) となっております。 ところが、 作成中のサイトでは、cookieを利用していないのですが、URIにも何も付加されていません。 それでも、ログイン・ログオフ状態はそれぞれ望む通りに表示されています。 これは一体どういうことなのか、お分かりになる方がいらっしゃいましたらご回答をお願い致します。 以下に大まかなコードを。 ログイン直後のページ session_start(); session_unset(); if(!isset($_SESSION["user_session"])){ session_register("user_session"); $_SESSION["user_session"]=$hoge; } その他のページ session_start(); $hoge=$_SESSION["user_session"]; if(!empty($hoge)){ echo "ログインしてません"; }else{ echo "ログインしてます"; } 以上のようなものです。 マイページはIDとパスワードで認証しており、本人以外は見ることができないのですが、その他のページはログインすれば誰でも見ることができるようになっています。 現段階で特に暗号化などの処理は施しておりませんが、セキュリティー関連は今後の作業として予定しております。 個人サイトを作り始めて半年で、色々と不勉強な部分、理解が不十分な部分がございます。 分かりやすく説明いただけると助かります。

    • ベストアンサー
    • PHP
  • セッション機構とPHPでの実装

    1. PHPで言うところのセッションとは、  クライアント毎にアカウントされた一連の  アクセス-レスポンス過程 2. session_start();  により、セッションを開始する 3. $_SESSIONによりセッションデータとして外部より取得 4. セッション終了時には,デフォルトでは30min  $_SESSIONによりセッションデータは解放される これは、PHPにおける大まかな一つのセッションの利用形式だと思いますが,実際の機構は次のようなものだと思います.  サーバがセッションを開始する   ↓  セッション管理用一時ファイルを生成   セッションIDを生成,ファイルに入れる  アクセス時刻;セッション変数;代入値 を蓄積    その際にセッションIDはHTTP転送によるパケットのヘッダに付けられるのでしょうか?それによってセッション管理されていることを判別しているのでしょうか?  

    • ベストアンサー
    • PHP
  • phpのセッションについて

    XAMPPのローカル環境でphpのプログラムを組んだのですが、いざ実際のサーバーにアップロード してもうまく動きませんん。 調べた結果セッションがちゃんと動いていないという結論に達しました。 単純なセッションなのですが、ローカル環境ですとちゃんと動くのが、サーバーにアップすると $_SESSION['sa']が空っぽの状態となります。 サーバーにアップロードしたindex.phpの中にecho $_SESSION['sa'];と書き込むと 「あいうえお」とちゃんと表示されますのでセッションには格納されているようなのですが 値をきちんとセッションで持ち越せないようです・・。 ローカルでは下記のファイルはちゃんと持ち越せていて、実際のサーバーではダメな理由がまったくわかりません。 何か特別な設定が必要なのでしょうか?何時間もググっていますがそういった設定が必要と いう記述は見当たらないのですが・・。 サーバーはさくらサーバーでバージョンはPHP 5.4.22となっています。 ------------------------------------------------------------ ファイル名 index.php <?php session_start(); $data="あいうえお" $_SESSION['sa']=$data; ?> <a href="aaa.php">aaa.phpへのリンク</a> ------------------------------------------------ ファイル名aaa.php ------------------------------------------------ <?php session_start(); $sss = $_SESSION['sa']; echo $sss ; ?> ------------------------------------------------

    • ベストアンサー
    • PHP

専門家に質問してみよう