アナリティクスアプリを構築しています。これには、別のソースからデータをフェッチし、計算を行ってからユーザーに表示するまで、ユーザーが30秒間待機する必要があります。
データをフェッチするときにページを30秒間ロードするのではなく、バックグラウンドでデータをフェッチしているときに待機中のページをユーザーに表示する方法はありますか?
誰かがそれがどのように行われることができるかについていくらかの光を投げることができますか?
アナリティクスアプリを構築しています。これには、別のソースからデータをフェッチし、計算を行ってからユーザーに表示するまで、ユーザーが30秒間待機する必要があります。
データをフェッチするときにページを30秒間ロードするのではなく、バックグラウンドでデータをフェッチしているときに待機中のページをユーザーに表示する方法はありますか?
誰かがそれがどのように行われることができるかについていくらかの光を投げることができますか?
1つの方法は、AJAXを使用してHTTPGETリクエストでサーバー上のページをポーリングすることです。
データベースまたはさらに優れたAPCを使用できます
編集:
ここではファイルのアップロードについて話しているのではないので、セッションはAPC_UPLOAD_PROGRESSよりも優れたオプションである可能性があります。セッションはユーザーごとのストレージを提供します。これはここで理想的であり、とにかくAPCのようなさまざまなストアによってバックアップできます。
注:ライトボックスの場合、ライトボックスjsを含める必要があります
<script>
function onload_wating()
{
var syncronize_target=SITE_URL+'your_controllername/action_timer/';
$.lightbox(syncronize_target, {
width : 450,
height : 260,
'modal' : true,
'onOpen' : function() {
$(".jquery-lightbox-button-close").css({"visibility":"hidden","display":"none"});
}
});
}
onload_wating();
<script>
action_timer.ctp
注:カウントダウンには、jqueryカウントダウンを含める必要があります-> http://keith-wood.name/countdown.html
<script>
$(function () {
$('#syncronize_header_timer').countdown(
{
until:+50,
format: 'MS',
onExpiry: ltliftOff
});
});
function ltliftOff() {
$.lightbox().close();
}
<script>
<div id="syncronize_header_timer" ></div>
==========================================
onload_wating()の上で、この関数はライトボックスを開き、コントローラーアクションにajaxクエリを実行してaction_timer.ctpを開きます
action_timer.ctpでは、カウントダウンタイマーを使用します。このタイマーは50までカウントされ、その後自動的に閉じます。
この50秒の間に、データベースからurデータを取得できます。