Maison  >  Article  >  développement back-end  >  Quelles sont les limitations pratiques sur la longueur des chaînes en PHP ?

Quelles sont les limitations pratiques sur la longueur des chaînes en PHP ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-03 02:59:03374parcourir

What are the practical limitations on string length in PHP?

Longueur maximale d'une chaîne en PHP

Les chaînes en PHP n'ont pas de limite spécifique concernant leur longueur dans les versions 64 bits selon PHP 7.0.0. Cependant, les versions 32 bits et les versions antérieures imposent une limite de 2 Go (2147483647 octets).

Dans PHP 5.x, les chaînes étaient limitées à 231-1 octets en raison de l'utilisation d'un entier signé de 32 bits pour enregistrer la longueur.

Limite de mémoire

Les scripts PHP ont une limitation sur la mémoire totale qu'ils peuvent allouer aux variables, plaçant ainsi un plafond sur la longueur d'un variable à chaîne unique. Cette limite est définie par la directive memory_limit dans php.ini. La valeur par défaut est de 128 Mo dans PHP 5.2 et de 8 Mo dans les versions antérieures.

Si aucune limite de mémoire n'est spécifiée, la valeur par défaut est une valeur définie lors de la compilation. L'attribution d'une valeur de -1 dans php.ini désactive les vérifications de la mémoire, permettant au script d'utiliser autant de mémoire que le système d'exploitation le fournit.

Limites pratiques

La directive de limite de mémoire impose une limitation pratique sur la longueur des cordes, quelle que soit la limite théorique. De plus, la taille du fichier peut être un facteur lors de l'extraction de son contenu à l'aide de fonctions telles que file_get_contents().

Exemple

Une démonstration simple :

<code class="php">ini_set('memory_limit', 1024*1024);
printf("memory: %d\n", memory_get_usage(true));

$str = str_repeat('a', 255*1024);
echo "Allocated string of 255KB\n";

printf("memory: %d\n", memory_get_usage(true));

$str = str_repeat('a', 256*1024);
echo "Allocated string of 256KB\n";
printf("memory: %d\n", memory_get_usage(true));</code>

Ici, une limite de mémoire de 1 Mo est définie. L'allocation de 255 Ko de mémoire de chaîne ne dépasse pas la limite, mais tenter d'allouer 256 Ko déclenche une erreur fatale due à l'atteinte de la limite.

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