Maison  >  Article  >  développement back-end  >  Pourquoi mes données AJAX POST sont-elles limitées même avec des limites PHP élevées ?

Pourquoi mes données AJAX POST sont-elles limitées même avec des limites PHP élevées ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-04 06:05:02738parcourir

Why Is My AJAX POST Data Limited Even With High PHP Limits?

PHP/Apache/AJAX Limite de données POST

Lors de la tentative d'envoi d'une grande quantité de données (2 millions de caractères) via POST à ​​l'aide d'AJAX (jQuery), le côté PHP ne parvient pas à récupérer les données et renvoie une erreur "Index non défini". Ce problème n'est pas lié au paramètre post_max_size dans php.ini, qui est suffisamment élevé (256 Mo).

Enquête sur les limites

Le problème réside dans les multiples limites imposées par divers composants impliqués dans le processus :

  1. Apache :

    • LimitRequestBody : contrôle la taille maximale des requêtes POST entrantes. Vous devez vérifier vos journaux d'erreurs Apache pour déterminer la limite réelle, qui est généralement d'environ 2 Go par défaut.
  2. PHP :

    • post_max_size : Limite la taille des données POST. Assurez-vous que ce paramètre est suffisamment élevé dans votre php.ini (par exemple, 256 Mo).
    • upload_max_filesize : bien que sans rapport avec les données POST, il convient de le mentionner pour être complet.
    • max_input_time : contrôle la durée maximale autorisé pour le traitement des données POST. Définissez-le sur une valeur élevée pour éviter les délais d'attente (par exemple, -1).
    • max_input_nesting_level : limite la profondeur des tableaux imbriqués dans les données POST. Si vos données contiennent des tableaux profondément imbriqués, vous devrez peut-être augmenter cette valeur.
    • max_execution_time : il est peu probable que ce soit la cause du problème.
    • memory_limit : garantit que le sous-processus PHP dispose de suffisamment de mémoire pour gérer les données. Ajustez ce paramètre en conséquence (par exemple, 256 M).
    • max_input_vars : limite le nombre de variables dans les requêtes POST. Si vos données contiennent un grand nombre d'éléments, vous devrez peut-être augmenter cette valeur.

Solution

Si le LimitRequestBody d'Apache est atteinte, vous ne pouvez pas POSTER directement les données car elles dépassent la limite compilée. Vous devez diviser les données en morceaux plus petits et les envoyer dans plusieurs requêtes POST.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn