2

JSON 配列として $.post (JQuery) を使用して、約 100 行のデータが投稿されます。しかし、何らかの理由ですべての行が受信されるわけではありません。

データは多かれ少なかれ次のようになります (内容は基本的に数字と小さな文字列です)。

rows = [["U", "0", "81949", 32 more...], ["U", "0", "81950", 32 more...] ..... ]

私がデータを送信している方法は次のとおりです。

$.post(url+"callback=?", { data : rows }, function(){}, "json");

ローカル バージョンで受信した行数 (count($_POST)) をエコーすると「100」と表示されますが、運用サーバーでは「25」と表示されます (毎回同じ量です)。

firebug でリクエストの詳細を確認すると、100 件すべてが送信されたことが正しく示されています。

PHPの「post_max_size」の値かもしれませんが、「100M」に設定しました。これで十分だと思います。

サーバーの設定に問題があると確信していますが、アイデアがありません...よろしくお願いします。

アップデート:

  • 運用サーバーには 8 GB のメモリがあり、その約半分を使用しています (メモリの問題ではありません)。
  • タイムアウトはありません(すべてのプロセスは約 3 秒で完了します)。
4

3 に答える 3

9

すでに受け入れられている回答がありますが、suhosin を使用していない場合、問題は低い "max_input_vars" php 設定である可能性があります。私はデフォルトで1000に設定されていましたが、これでは十分ではありませんでした.

于 2012-06-28T19:04:31.037 に答える
3

運用サーバーはsuhosinを使用していますか? Suhosin は、多くの場合、GET と POST の両方のリクエスト サイズを制限する原因となります。POST と GET のサイズには別々の制限があります (実際、私が覚えていることから、一方が他方に影響を与えるため、両方を増やす必要があります)。

phpinfo() を見て、そこに suhosin に関する何かがあるかどうかを確認してください。

あなたに影響を与える可能性のあるスホシン値:

  • suhosin.get.max_vars
  • suhosin.post.max_vars
  • suhosin.request.max_vars

(+ value と var length に相当するもの)

また、ファイルをアップロードしている場合、これも suhosin によって制限されます。

  • suhosin.upload.max_uploads (したがって、デフォルトでは 25 です)
于 2012-04-10T06:52:02.183 に答える
0

クエリ データには最大サイズがあります。こちらを参照してください。問題は 2 のいずれかである可能性があります。データの一部が受信されているか、PHP が一定量のデータを削除しています。PHP でのこの設定については、こちらを参照してください。

于 2012-04-10T06:31:40.870 に答える