2010-12-17 13 views
2

私はPHPページが他のすべての情報をロードするようにソリューションを探しています。完了してその結果を表示するまでには時間がかかります。私はPHPページを最初に他の情報と一緒にロードしてから操作を行います。

操作が長時間かかるため、PHPページの読み込みが遅すぎます。私はクライアントに最初にページを見て、最後に結果を表示する操作をします。

私はob_start()& flush()を試しましたが、失敗しました。 私はそう思う操作を初期化するためにJavascriptが必要な場合があります。しかし、どうすればこのことを示唆することができますか?

+0

同じ方法として、これは非常に簡単です。 'onLoad'にあります。 –

+0

あなたはjavascriptで意味します。 –

+1

を指定してください。はい、Javascript(AJAX)は、そのような機能の一般的なオプションです。 jQueryを調べることをお勧めします。それはあなた自身で書くことに比べてajaxをもっと簡単にします。 –

答えて

0

"スローコール"なしでページを読み込む必要があります。 onloadイベントまたはWebページの最後にあるスクリプトで、サーバーへのXHR呼び出しを行い、低速データを取得します。呼び出しはデフォルトでは非同期であるため、ユーザーは呼び出しが返るのを待つ間にWebページと対話できます。その時点で、データを取得してJavaScriptでHTMLに変換します。

+0

あなたは参照するために同じを行ういくつかのリンクを与えることができます。私は作業を理解し、鉱山でそれを作ることができるようにする –

1

これはPHPの実装ですか? phpはサーバー側の言語なので、ユーザーがhttp応答を受け取る前に実行されます。だからまずサイトを構築する必要があります。それをユーザーに送信します。操作を行う必要のあるスクリプトに対して、新しいリクエスト(たとえばajaxで)を行うよりも、これは注文コードが実行されるべきものです。

  • PHP(サーバー側):HTMLは
  • 画像やJavaScriptのファイルがロードされ、構築されるJavaScript(クライアント側):作成ビルドし、あなたのウェブサイト、 メインのPHPコードが
  • HTML(クライアント側)が実行されます新しいhttprequest(非同期)を使用してPHPファイルに追加します。 oapationが取ることができる長い時間のためにタイムアウトに注意してください。必要に応じて、カスタムタイムアウト時間を設定します。
  • PHPは(サーバサイド):結果を返す(あなたのPHPサーバがタイムアウトしないようにして、ほとんどのサーバでデフォルトが30秒だと思ってください)
  • Javascript(Clientside): ajaxハンドラ

いくつかの手作りのリンク。あなたは非常に短い時間で、時限イベントをトリガするために、オンロード使用

Ajax tutorial of w3schools
jQuery ajax api with examples

-1

。それによって画面が描画されます。

イベントが発生すると、AJAX技術を使用して長いプロセスを開始します。

サーバーでプロセスを長時間実行することはできません。しばらくすると(通常は300秒)、逃走タイマーがサーバースレッドを強制終了します。これを避けるには、長いプロセスでポーリング技術を使用するか、通常のWebサーバー環境で実行しないでください。

20秒以上30秒以上実行する場合は、セッションに何らかのステータスを保存し、「有効な」応答を返します。次回のサイクルを終了する前に、返信を使用して進行中のユーザーを更新します。これはセッションデータをロードして位置を決め、もう一度短時間実行します。

警告 - PHPはセッションデータへのすべてのアクセスを慎重にシリアル化するため、サーバーがサイクルを処理している間にユーザーが送信すると、そのサイクルが処理されるまでそのサイクルが終了するまで待機します。

1

jQueryのは、いつものような...

<script type="text/javascript" src="jquery-1.4.4.min.js"></script> <!-- Put this in your web page's head --> 
<script type="text/javascript"> 
$(function() { 
    $('wherever-you-need-the-resulting-html-to-go').html('<img src="loading-image.gif" alt="Loading" />'); 
    $.ajax({ 
     url: 'wherever-your-slow-code-is.php', 
     success: function(msg) { 
      $('wherever-you-need-the-resulting-html-to-go').html(msg); 
      } 
     }); 
    }); 
</script> 
+0

あなたの遅い機能を別のPHPファイルに入れてください。上記のajax呼び出しは関数にポーリングし、処理が終わったら、どこに行きたいかデータを挿入します。 – 65Fbef05

+0

これは、クライアントがJavaScriptを持っていると仮定しているため、最初のPHPページからインライン処理を行うほど100%信頼できるものではありません。ソリッドコードの例では+1です。 – zanlok

+0

複数のページからなるページを読み込んで食べることはできませんか?ハ、ハ! – 65Fbef05

関連する問題