何らかの理由で、サーバーが一定時間 (たとえば数時間) アイドル状態の場合、最初のログイン試行は失敗します。
これが起こることです:
- ユーザーがログイン スクリプトに移動する
- スクリプトはセッション変数を設定し、メイン ページにリダイレクトします
- メイン ページはセッション変数を読み取ることができるはずです (ただし、この場合は失敗します)。
PHP エラー ログにコメントはなく、2 回目の試行は正常に機能します。これは、アイドル期間の後にページにアクセスする最初のユーザーに対してのみ発生します。たとえば、別のユーザーが 5 秒後にログインしようとすると、すべて正常に動作します。
これは、FastCGI を使用する PHP 5.3 の IIS7 上にあります。
ここで何が問題なのか、解決策を見つけるために何ができるのか考えていますか?
これは、スクリプトが login.php をどのように設定するかの大まかな方法です。
@session_start();
$_SESSION['userid'] = $userid;
session_write_close();
session_unset();
usleep(200000);
header('Location:index.php');
メインスクリプト
session_start();
if (isset($_SESSION['userid'])) {
// Login successful
}