Als ich heute die spezielle Produktliste gespeichert habe, stellte ich fest, dass sich im Frontend mehr als 2.300 Daten befanden, der eigentliche Server jedoch nur 166 Daten akzeptierte und in der Datenbank speicherte
Nach dem Debuggen wurde festgestellt, dass die Datenmenge korrekt war, als die Front-End-Seite die Post-Anfrage übermittelte, aber nur 166 Elemente vom Server empfangen werden konnten.
Zuerst dachte ich, dass die Länge der Post-Anfrage das Limit überschreitet, aber nachdem ich mir den Inhalt der Anfrage angesehen hatte, waren es nur mehr als 200.000, und die Post-Anfrage unterstützt standardmäßig die Datenübertragung innerhalb von 8 Millionen .
Ich vermutete also, dass es an der internen Konfiguration von PHP liegen könnte. Später überprüfte Baidu das Konfigurationselement max_input_vars. Dieses Konfigurationselement wurde nach der PHP-Version 5.3.9 hinzugefügt. Der Zweck besteht darin, Hash-Konflikte zu verhindern .
Ändern Sie in diesem Fall das Konfigurationselement Der Standardwert ist 1000, ändern Sie ihn auf 10000; nach dem Neustart des Dienstes wird festgestellt, dass die vom Server ist 1666, was den vorherigen 10 Malen entspricht, also genau dem Vielfachen, nachdem die Konfigurationselemente angepasst wurden.
Die vom Frontend übertragene Datenmenge ist jedoch ungewiss. Selbst wenn max_input_vars auf 100.000 eingestellt ist, reicht es möglicherweise nicht aus, daher sollten wir einen anderen Weg finden.
1. Das Frontend konvertiert das Array zur Übertragung in JSON, also JSON.stringify(goodsList)
2. Der Server empfängt und analysiert $goodsList = json_decode($_POST['goodsList'], true);
3. Der Test ergab, dass die vom Frontend gesendeten Daten vom Server abgerufen werden können, und das Problem wurde erfolgreich gelöst