2017-03-15 13 views
0

からセッション値を取得します。私は現在、このようなPHPスクリプトを持っています:whileループ

function a() 
    { 
     while(true) 
     { 
      if($_SESSION["check"] == 0) 
      {      
       page_close()//function runs when page closed 
       break; 
      } 
      $_SESSION["check"] = 0; 
      sleep(2);     
     } 
    } 

と、ブラウザでページが閉じられたかどうかを確認するために、半秒毎の後にAJAXによって呼び出され、Bという名前の別の関数かどうか:

function b() 
    { 
    $_SESSION["check"]=1; 
    } 

問題は、$ _SESSIONは、機能に[「チェック」]も、常に関数bがこのように何度も呼び出された後に値0を返すということです。実行中に関数内で変数がロックされているかどうかを知る。もしそれが真であれば、$ _SESSION ["check"]を検出する最良の方法は、whileループのような他の関数によって変更されました。 ありがとうございました:D

+0

start session first 'session_start()' –

+0

私はそれ以前にsession_start()関数を実行していました。 –

+0

$ _SESSION ["check"] = 1と書かなければなりません。 ifステートメント。ブレーク前のif文で関数b()を呼び出す。 –

答えて

0

解決策が見つかりました。セッションは実行中のスクリプトにロックされているため、他のスクリプトはセッションの値を変更できず、予期しない結果につながる可能性があります。しかし、他のスクリプトがセッションを使用しているときにセッション変数を変更したい場合は、関数session_start()をsession_write_close()関数で直ちに変更して閉じることができます。