2016-07-24 19 views
0

多くのデータを処理するプロジェクトにはステップフォームがあります。作成中のエラーを防ぐため、すべての情報はクライアント側に保存され、最終的にサーバーに送信されます。PHPサーバに大量のデータを送信する可能性のある方法

サーバーに送信される情報は、次のようになります。

{ 
name: "project1", 
decription: "lot of text", 
schedule:[{weekDay:1, startHour:"09:00", endHour:"15:00"}, ...] 
tasks:["task1", "task2"... until 20/30], 
files:[{file1}, {file2}, ...], 
services:[{ 
    name: "service1", 
    decription: "lot of text", 
    schedule:[{weekDay:1, startHour:"09:00", endHour:"15:00"}, ...] 
    tasks:["task1", "task2"... until 20/30], 
    files:[{file1}, {file2}, ...], 
    jobs:[{ 
     name: "job1", 
     decription: "lot of text", 
     schedule:[{weekDay:1, startHour:"09:00", endHour:"15:00"}, ...] 
     tasks:["task1", "task2"... until 20/30], 
     files:[{file1}, {file2}, ...] 
     },{ 
      name: "job2", 
     } 
    ] 
    ... 
    },{ 
     name:"service2", 
     ... 
    } 
} 

などなど... これは本当に減少の例では、実際の環境には、およそ10〜15のサービスとの1つのプロジェクトがあるでしょう、それぞれが4-5の仕事をしています。

私は最後のレベルで約15項目のすべてを処理することができました。送信前にサーバに入れられていないオブジェクトを削除するためにデータを前処理しようとしています。最後のレベルでは、 "max_input_variables exceeded xxx"サーバ側をトリガーすることなく、50以上のアイテムしかし、依然として、限界に非常に近い場合もあります。

私はデータを送受信する方法を変えることを考えていますが、推測が正しいかどうかはわかりません。

入力変数のエラーを防ぐためのjson要求を提起する前に、要求はファイルを送信するmultipart/form-dataでなければなりません。送信

  • (FORMDATAが{project:{hugeJSON}, files:[file1, file2], services:[{files:[...]}, {files:[...]}] }のようになります。)単一の変数でJSONなど、すべてのデータ

    • マウントと分離された変数にファイルを保持:

      は私の推測は、次のされた、と述べましたサーバーへのフォームの入力中に部分的なデータを保存し、どこかに格納します(tmpファイルが私の最善の策です)。最後のステップでは、メインフォーム情報のみを送信します。

    • おそらく愚かな推測ですが、チャンクされたデータを送信するようなものがありますか?理想的には、「プロジェクトの作成 - >サービスの保存 - >サービス1のためのドキュメントの生成」というローディングバーをユーザに提示したいと思います。チャンクされた応答が、それについてはわからない。

    私に正しい方法を示す助けがあれば、本当に感謝します。

    事前にタンクしてください。

  • 答えて

    0

    オブジェクトの塗りつぶしが完了したら、それを文字列化して、ポストパラメータとしてサーバーに送信する必要があります。

    サーバーサイドを受け取ったら、JSONを解析して作業を続けることができます。

    関連する問題