0

session_start() で始まる php ページがあり、ユーザー情報をセッション変数に保存します。その後、(1) 長いループ スクリプトが計算を実行するか、(2) 前のフォーム送信からの _POST データに応じてデータ クエリ部分に進みます。

スクリプトがまだループして別のウィンドウでデータを取得している場合でも、いくつかのクエリを実行したいと考えています。したがって、(1)、(2) をそれぞれ実行する同じ php ページを含む 2 つのウィンドウ タブがあります。

問題は、(1) を実行するときとループ スクリプトの前に session_destroy() を使用しない限り、これを実行できないことです。そうしないと、(2) がロードされて開くことができなくなります。セッションを破棄したくありません。そうしないと、ユーザーは何度もログインする必要があります。それは可能ですか?ありがとう。

ps: (1) を実行し、(2) を実行するためにシークレット ウィンドウを開いたとき。session_destory() がなくても、この問題はありません。

コードは次のようになります。

<?php 

session_start();

echo "<form method='post'>
<input type='submit' id='one' name='one' value='one'>
<input type='submit' id='two' name='two' value='two'>
</form>";

$if_one = $_POST["one"];
$if_two = $_POST["two"];
if ($if_one) loop();
if ($if_two) query();

function loop()
{
    //session_destroy();
    $y = 0;

    for ($i=0; $i<20000000; $i++)
    {
         $y += ($i * $i) % 5;
    }
    echo $y;
}

function query()
{
    echo '222';
}

?>
4

3 に答える 3

1

私はちょうどそれを解決したと思います。を使用する代わりにsession_destroy()session_write_close()この問題を解決します。

于 2012-09-02T06:20:03.627 に答える
0

あなたはそれをする必要はありません、

あなたがsession_start();を呼び出すとき; セッションが作成され、php.iniでタイムアウトするか、session_destroy()を呼び出すまでアクティブになります。

エラーは別の場所にあります。エコーまたは印刷の後にsession_startを呼び出しますか?

于 2012-09-01T13:27:45.267 に答える
0

問題は複数のウィンドウでのセッションではなく、ヘッダー、特に他のページが同じセッションを使用する必要があるセッションIDCookieを出力する前に長いループを実行する最初のスクリプトにあるようです。おそらく、セッションを開始して変数を保存してから、ユーザーをロングループの別のページにリダイレクトするか、「ようこそ!ロングループを開始しています...」などのコンテンツを出力する必要があります。

于 2012-09-01T13:30:08.930 に答える