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.
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.
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().
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!