Heim  >  Artikel  >  Backend-Entwicklung  >  Warum kann ich große nicht-binäre Daten nicht über AJAX posten?

Warum kann ich große nicht-binäre Daten nicht über AJAX posten?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-03 19:35:30608Durchsuche

Why Can't I POST Large Non-Binary Data via AJAX?

Grundlegendes zu PHP/Apache/AJAX-POST-Datenbeschränkungen

Frage:

Es ist nicht möglich, große nicht-binäre Daten über AJAX zu POSTEN, es wird ein leeres Ergebnis angezeigt in PHP mit einem Fehler, der auf ein undefiniertes $_POST-Element hinweist.

Code:

// JavaScript
$.ajax({
    data: {'data_string': string}
});

// PHP
$_POST['data_string']

Analyse:

Eine umfassende Untersuchung potenzieller Grenzen, die den POST-Prozess behindern können ist notwendig, um dieses Problem zu beheben.

Zu berücksichtigende Punkte:

  • Apache: LimitRequestBody schränkt die Größe des von Apache empfangenen HTTP-Anfragetexts ein. Normalerweise auf 2 GB eingestellt, bestimmte Werte können jedoch variieren.
  • PHP: Mehrere Parameter beeinflussen die POST-Datenverarbeitung:

    • post_max_size: Begrenzt die Menge an POST-Daten, die akzeptiert werden können.
    • upload_max_filesize: Legt die maximale Größe für Datei-Uploads fest.
    • max_input_time: Gibt die maximal zulässige Zeit für die POST-Dateneingabe an.
    • max_input_nesting_level: Grenzwerte die Verschachtelungsebenen komplexer Arrays in POST-Daten.
    • memory_limit: Beschränkt den für PHP verfügbaren Speicher, was sich auf die Verarbeitung großer POST-Daten auswirken kann.
    • max_input_vars: Begrenzt die Anzahl der in POST-Daten zulässigen Variablen .
  • Andere Faktoren:

    • Proxyserver: Proxys können ihre eigenen Grenzen für die Größe des Anforderungskörpers festlegen.
    • Clientseitige Browser: Browserfunktionen können sich auf die Größe der POST-Daten auswirken, die gesendet werden können.

Lösung:

Um dieses Problem zu beheben Überprüfen Sie jeden dieser einschränkenden Parameter in Apache, PHP und anderen beteiligten Komponenten. Stellen Sie sicher, dass sie die Größe der übertragenen POST-Daten überschreiten.

Wenn das integrierte Apache-Limit überschritten wird, sollten Sie erwägen, die großen Datenmengen in kleinere Blöcke aufzuteilen und sie schrittweise zu übertragen.

Das obige ist der detaillierte Inhalt vonWarum kann ich große nicht-binäre Daten nicht über AJAX posten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn