今日特産品リストを保存したところ、フロントエンドには2,300件以上のデータがあることが分かりましたが、実際のサーバーでは166件のデータしか受け付けずデータベースに保存していました
デバッグ後、フロントエンド ページが投稿リクエストを送信したときのデータ量は正しいものの、サーバーが受信できるのは 166 アイテムのみであることがわかりました。
最初は投稿リクエストの長さが制限を超えているのかと思いましたが、リクエストの内容を見てみると200Kを超えているだけで、投稿リクエストデフォルトでは8M以内のデータ送信をサポートしています。
そのため、PHP の内部設定が原因ではないかと考え、その後、Baidu で検索したところ、max_input_vars という設定項目が見つかりました。この設定項目は、ハッシュの競合を防ぐために、PHP 5.3.9 バージョン以降に追加されました。
この場合、設定項目を変更します。デフォルトは 1000 ですが、10000 に変更します。サービスを再起動すると、サーバーによって取得されるデータ量が 1666 個で、以前の 10 倍であることがわかります。 1 つは、まさに構成アイテムが複数調整された後に起こったことです。
ただし、フロントエンドが送信するデータ量は不確実なので、max_input_vars を 100,000 に設定しても足りない可能性があるため、別の方法を見つける必要があります。
3. 最終的な解決策
1. フロントエンドは配列を送信用のjson、つまりJSON.stringify(goodsList)に変換します
2. サーバーは $goodsList = json_decode($_POST['goodsList'], true); を受信して解析します。
3. テストの結果、フロントエンドから送信されたデータがサーバーで取得できることがわかり、問題は正常に解決されました