1

スクリプトの 1 つでignore_user_abort()set_time_limit(0)を使用するシステムに取り組んでいます。

Jqueryを使用して、1 つの HTTP 1.1 パケットをこのスクリプトに送信する必要があります。その後、アプリケーション内で他のスクリプトを再開して使用し続ける必要があります。

しかし、パケットが送信されると、セッションは何らかの形でロックされ、同じブラウザーを使用してドメイン内の他のスクリプトを更新またはロードしようとすると、前のスクリプトが完了するまでロードされません (さらに時間がかかる場合があります)。 2時間)。

ただし、同じユーザー名とパスワードを使用して、別のブラウザーからアプリケーションを使用し続けることは可能です。これは、セッションに関連していると思います。

アプリケーションの残りの部分の機能に干渉することなく、このスクリプトをバックグラウンド プロセスとして実行するには、これを防ぐか、何らかの方法で解決する必要があります。

どのように、またはなぜこれが起こるのか、どうすれば解決できるのか、何か考えはありますか?

AJAX リクエストは次のようになります。

<script>
$('#launch').click(function () {

//acomodamos la UI
$('#launch').hide();
$('#c_wait').slideUp();
$('#c_started').fadeIn("slow");

//send the request
$.get("modules/_map.php", { funcion: "launch", scan_id: "<?php echo $scan->id; ?>" } );                     
});
</script>
4

1 に答える 1

2

あなたは正しいかもしれないと思います-問題はセッションに関連している可能性が非常に高いです(JavaScriptは同期要求が実行されていることを示していません)。

セッション情報を使用する長いリクエストを実行している場合は、セッションデータを管理する方法のテンプレートとして次のコードを使用すると便利な場合があります。

// start the session
session_start();

// manipulate session data
// e.g.,
// $some_var = $_SESSION['some_var'];
// $_SESSION['some_var'] = 'something';

// flush any changes to the session and close
session_write_close();

// Start the long process here...

このアプローチを使用すると、長いリクエストが開始する前にセッションを操作し、同じセッションを使用して後続のリクエストのためにセッションのロックを解除できます。

于 2012-12-20T23:20:46.920 に答える