2017-02-07 3 views
0

私はPHPで処理する必要があるJSON製品を15k持っています。 JSONデータを1000から1500に減らすと、1/2秒かかるので、jqueryアクションを実行する2つのボタンで構成されるユーザーインターフェイスは数秒かかります。 問題は、すべてのデータ(15k)を渡すと、HTMLページを表示するのに40/50秒かかってしまい、ボタンをクリックしてもうまくいきません。大量のHTMLデータをエコーするには多くの時間がかかりますPHP

これは私が行うことです。 JSONを外部URLから取得しています(問題ありません)。 AJAX(POST)を使用してJSONをPHPに渡します(問題ありません)。私は

<? 
    echo'<div class="myclass" id="myid">'; 
    echo'<input type="hidden" value="somedatas">'; 
    echo'<input type="text" name="'.$json[$_POST["SOMEDATA"]].'" value="somedatas">"; 
    .... 
?> 

それを行うには良い方法があると件のデータをエコーてるdata_processingは大丈夫です後 は、配列内の文字列をエンコードし、各データを処理し、PHPファイル内の文字列を取得しますか?私もdisplay:noneをメインのdivに設定しようとしましたが、変更はありませんでした。

UPDATE私はパスを忘れてしまった は、PHPのエコーがdiv要素

これにAJAX要求に背を向け、添付されたがクリックされると、私は1度確認ボタンでデータ1を処理するために使用するスクリプトがあります

 echo'<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> 
<script> 
$(document).ready(function(){ 
    $("#close_tab_prw").click(function(){ 
     document.getElementById("prd_prw_tab").innerHTML = ""; //reset div 
     $("#prd_prw").css("display","none"); 
     $("#container_others").css("opacity","1"); 
}); 
    $("#update_all_items").click(function(){ 
     var prd_number = $("input[name=prd_max_number]").val(); 
     for(var i = 0; i < prd_number; i++){ 
      var string_ok = "#confirm_form_prd_"; 
      string_ok = string_ok.concat(i); 
      var dataString = $(string_ok).serialize(); 
      $.ajax({ 
     type: "POST", 
     url: "';echo $dir; echo'", 
     data: dataString, 
     success: function(data) { 
      console.log(data); 
      $("#prd_prw_tab").html(data); 
     } 
      }); 
     } 
    }); 
    $("#disable_img").click(function(){ 
     $(".img_check").prop("checked", false); 
    }); 
    $("#allow_img").click(function(){ 
     $(".img_check").prop("checked", true); 
    }); 
    $("#disable_desc").click(function(){ 
     $(".n_desc_chk").prop("checked", false); 
    }); 
    $("#allow_desc").click(function(){ 
     $(".n_desc_chk").prop("checked", true); 
    }); 


    }); 

</script>'; 

、これは私が製品を表示するために使用主な機能です:

$(document).ready(function(){ 
$("#get_json_btn").click(function(){ 


     document.getElementById("unique_json_return").innerHTML = ""; //reset div 

     if(document.getElementById('url_json').value != "") { 
      $.getJSON(document.getElementById('url_json').value , function(result){ 
      $.each(result, function(i, field){ 
       $("#unique_json_return").append(JSON.stringify(result)); 
      }) 
     }) 
     .fail(function() { alert('getJSON request failed, see tips '); }) 
     } 
     else { 
      alert("No Url insrted, please, insert your JSON url"); 
     } 
    }); 
$("#update_products").click(function(){ 
     new_height = ""; 
    $(window).resize(function() { 
     $("#prd_prw").css("height", $(window).height()-(20*$(document).height()/100)); 
    }); 
     new_height = $(window).height()-(20*$(document).height()/100); 
     $("#prd_prw").css("height", new_height); 
    $("#prd_prw").css("display","block"); 
     $("#container_others").css("opacity","0.3"); 

    var entire_json = document.getElementById('unique_json_return').innerText; 
    var one = document.getElementsByName('one')[0].value; 
    var two = document.getElementsByName('two')[0].value; 
    ... 
    var ten = document.getElementsByName('ten')[0].value; 


    if(entire_json == "") { 
     alert("Invalid or Empty JSON response"); 
    } 
    else{ 
       $.ajax({ 
    url: '<?echo $dir; ?>', 
    data: {entire_json : entire_json, one:one, two:two, three:three,...ten:ten 
    }, 
    type: 'POST', 
    success: function(data) { 
    document.getElementById("unique_json_return").innerHTML = ""; //reset div 
    $("#prd_prw_tab").append(data); 

     } 
}); 
    } 
}); 
}); 
+0

あなたは明示的にページにHTMLをエコーする必要はありません。 [この質問にはいくつかの良い情報があります](http://stackoverflow.com/questions/4148031/what-is-the-best-practice-to-use-when-using-php-and-html) – castis

+0

あなたのエコーはありません有用。あなたが説明しているコードを追加してください。私たちはあなたの言葉よりもコードをよく理解しています。ここでは、JavaScriptのパーサの問題(低パフォーマンスのPC)やPHPの悪いコーディングになる可能性があります。私たちは知ることができません。 –

+0

非常に大きなコードです。@ MarcosPrezGude –

答えて

2

これらの15k製品をどのくらいの頻度で解析する必要がありますか?

時折実行されるだけで、バックエンドのみでエンドユーザーが50秒待機することはありません。別のサービス(PHPではない可能性があります)に分割できるようになるまでは、許容します。

これはエンドユーザーのやりとり後に発生する場合、私はデザイン全体を再訪し、1つのユーザーアクションが15k個のオブジェクト全体を解析することがないようにします。

+0

どうすればよいですか?あなたは例を挙げることができますか? –

+0

あなたが達成しようとしていることについてもっと詳細を教えてもらえれば、行きたいと思うことがあります。これらの15kオブジェクトは何ですか?なぜ、それらはすべて一度に処理する必要がありますか、どのくらいの頻度で処理する必要がありますか、このタスクの最終目標は何ですか? – HomerPlata

+0

私はいくつかのオブジェクトの詳細が含まれている15kオブジェクトを送信しています、JSONはAJAXを使ってURLからフォーマットされています。そして、上記のAJAX要求をPHPのファイルに更新それぞれのデータを1つずつ印刷して印刷するので、データをプロセスの最後に戻して成功関数に渡すと、AJAXが印刷し、ユーザーはを使用して変更できます。ボタンは、別のAjaxリクエストを処理して各アイテムを1つずつ処理して格納する別のPHP関数に処理します。 –

関連する問題