16

jQuery から PHP に約 200x50 (行、列) のテーブル値を投稿する必要があります。2 つのオプション:

1) 10,000 変数の配列として送信します (php.ini の max_input_vars を増やします)。

2) 配列を JSON 文字列にシリアライズし、文字列として POST し、サーバー側の PHP でデコードします。

何が好ましいですか?オプション 1 に潜在的な問題はありますか?

ありがとう


PS。更新。最大 250x50 セルの大規模な入力テーブルで両方のポーションをテストした後、最初のオプションがはるかに高速であるように見えます: JSON 文字列の場合は 1-2 秒対 ~17-20 秒です。

object-to-JSON および back トランザクションはほぼ瞬時 (数ミリ秒) であるため、ボトルネックはサーバーへのデータ転送時間です。

4

5 に答える 5

0

JSON 文字列にシリアル化しますが、はるかに高速であるため、json_encode() と json_decode() を使用します。変数をオブジェクトに入れてからシリアル化します。

また、javascript はより多くの作業を実行する必要があります。これは、クライアントが実行するためであり、サーバーにそのような大きな負荷がかかることはありません。

于 2013-11-03T12:01:30.193 に答える
0

オプション#1の変形をお勧めします。JSON エンコーダーとデコーダーはバグが多く、クロスプラットフォームの問題があることが知られていますが、何千もの変数を投稿すると問題が発生する可能性があります。代わりに、すべての投稿変数を単一の application/x-www-form-urlencoded 投稿変数として渡し、PHP で parse_str() を使用してそれらをデコードできます。

Javascript:

data = "data="+escape("v[0][0]="+escape(v[0][0]));

PHP:

parse_str($_POST['data'],$data);
于 2013-11-05T02:31:41.610 に答える
0

多くの要因があると思います。どの環境で作業していますか? サーバーとクライアントは同じ PC 上にありますか? これを毎日または毎時間行う必要がありますか?

同じサーバー上に他のプロジェクトがあるため、応答が遅くなりますか? 1 ~ 2 か月で 10,000 を超える vars が作成されますか?

最初のオプションのようにデータを投稿すると、Javascriptより高速であるため、データがPHP失われることがあります。

RabitMQ非同期で実行できる場合は、サーバーの準備ができたときにスタッフを処理する Messaging Server を 探してください (処理も高速です!) http://www.rabbitmq.com/

于 2013-10-29T13:40:56.760 に答える