0

ユーザーのフェーズに応じて待ち時間を設定したい。これを簡単にテストして、これを入れたかっただけです:

function towait(){
    if ($query = mysql_query('select fase, lastone from users where id = "'.$_SESSION['id'].'"')){
        while($r[]=mysql_fetch_array($query));

        if ($r[0]['fase'] == 0) {
            $wait = 0;
        } elseif ($r[0]['fase'] == 1) {
            $wait = 300;
        } elseif ($r[0]['fase'] == 2) {
            $wait = 600;
        } elseif ($r[0]['fase'] == 3) {
            $wait = 900;
        } elseif ($r[0]['fase'] == 4) {
            $wait = 1500;
        } elseif ($r[0]['fase'] == 5) {
            $wait = 2100;
        } elseif ($r[0]['fase'] == 6) {
            $wait = 2700;
        } elseif ($r[0]['fase'] == 7) {
            $wait = 3600;
        } elseif ($r[0]['fase'] == 8) {
            $wait = 5400;
        } elseif ($r[0]['fase'] > 8) {
            $wait = 7200;
        } else {
            $wait = 0;
        }

        if((time() - $r[0]['lastone']) > $wait) {
            //go ahead
            $go = 1;
        } else {
            //you have to wait
            //I know this looks weird, but I just save the hour when OK to go as a string in the format "HHuMM"
            $go = date("H", ($r[0]['lastone'] + $wachten + 60)) . "u" . date("i", ($r[0]['lastone'] + $wachten + 60));
        }

        return $go;
    } else {
        $go = -1;

        return $go;
    }
}

奇妙なことに、フェーズ 7 まではすべてが完全に機能しますが、ユーザーがフェーズ 7 に入るたびに機能が停止します (スクリプトはユーザーを待たせません)。フェーズ 8 についても同様です。フェーズ 9 および 9+ では、すべてが再び機能します。

私はそれが狂っているように聞こえることを知っています (そしてコードは不十分に書かれています) が、私は何がこのことを引き起こすのか疑問に思っていました.

4

1 に答える 1

1

最も可能性の高い説明は、セッションがタイムアウトしたことです。これは、 $_SESSION['id'] を返すと空になり、機能しないことを意味します。

php.ini でセッション時間を増やすことができます: すべてを説明しているブログを読むのが最も簡単です: http://prajapatinilesh.wordpress.com/2009/01/14/manually-set-php-session-timeout-php-session /

于 2012-08-20T03:22:33.547 に答える