あなたは間違っている:あなたのアプリケーションからサービスを受けるために、ユーザーがたった数秒間ページにくっついてしまうことを強要したくありません。
代わりに、ステータスページ(もちろんajax)を定期的に問い合わせるウィジェットを使用し、ジョブが完了したらメッセージを表示します。
(生成する7分を取っているExcelファイルのどのようなDBのダンプ?)
編集:
異なるブラウザが長いAjaxのリクエストで異なる動作をしますので、待っているそれらに依存しません。ユーザーが喜んでいる場合でも永遠に。レポート生成のリクエストとレポートのダウンロードを切り離すと、アプリはより堅牢になります。
このあなたに私が話しているかのアイデアを与える必要があります。
create_my_excel_file.php:
$_SESSION['excel_status']='generating';
create_the_excel_file();
$_SESSION['excel_status']='finished';
をcheck_status.php:
echo $_SESSION['excel_status'];
user_interface.php:
<script type="text/javascript">
function initiateRequest(){
$.ajax('create_my_excel_file.php');
setInterval('checkForCompletion()', 5000);
}
function checkForCompletion(){
$.get('check_status.php', function(data){
if('finished'==data){
alert('Completed! Download the file now.');
location.href='file_download.php';
}
});
}
</script>
<a href="javascript:initiateRequest();">Generate the file</a>
をポーリングする
第二AJAX呼び出し:エクスポートのステータスを示していたクラスのステータスを持つDIV
輸出を開始するために最初にAJAX呼び出しをしていると仮定すると、
あなたのクライアントは、ファイルのダウンロードを開始するのに7〜8分待つでしょうか?試したコードを入力してください。 –
あなたはそれがExcelファイルの作成から来ると思いますか?コードを試してその部分を無効にし、何かが起きたかどうかを確認してください – user1040899
resultSetsで試しましたか? – Sandeep