Limite de longueur de chaîne PHP
PHP permet une manipulation et un stockage étendus des chaînes, mais des limites existent concernant la longueur maximale des chaînes.
Builds 64 bits
Comme indiqué dans la documentation PHP (http://php.net/manual/en/lingual.types.string.php), il n'y a pas restrictions spécifiques sur la longueur des chaînes dans les versions 64 bits de PHP 7.0.0 et versions ultérieures. Cela signifie que les chaînes peuvent théoriquement être aussi longues que la mémoire système le permet.
Builds 32 bits et PHP 5.x
Dans les builds 32 bits et les versions PHP avant la version 7.0.0, les chaînes étaient limitées à une longueur maximale de 231-1 octets en raison du code interne qui enregistrait la longueur sous la forme d'un entier signé de 32 bits.
Gestion des fichiers et limite de mémoire d'exécution des scripts
Bien qu'il n'y ait pas de limite de longueur de chaîne inhérente, les scripts PHP ont une limite de mémoire appliquée par la directive memory_limit dans le fichier de configuration php.ini. Cette limite, qui est par défaut de 128 Mo dans PHP 5.2 et de 8 Mo dans les versions antérieures, affecte la quantité de mémoire pouvant être allouée à toutes les variables, y compris les chaînes. Si cette limite est dépassée, le script se terminera avec une erreur fatale.
Exemple pratique
Le code PHP suivant montre comment la limite de mémoire affecte l'allocation de chaînes :
<code class="php">// limit memory usage to 1MB ini_set('memory_limit', 1024*1024); // initially, PHP seems to allocate 768KB for basic operation printf("memory: %d\n", memory_get_usage(true)); $str = str_repeat('a', 255*1024); echo "Allocated string of 255KB\n"; // now we have allocated all of the 1MB of memory allowed printf("memory: %d\n", memory_get_usage(true)); // going over the limit causes a fatal error, so no output follows $str = str_repeat('a', 256*1024); echo "Allocated string of 256KB\n"; printf("memory: %d\n", memory_get_usage(true));</code>
Dans cet exemple, le script alloue avec succès une chaîne de 255 Ko mais ne parvient pas à allouer une chaîne de 256 Ko en raison de la limite de mémoire. La limite exacte de mémoire dépend des ressources et de l'architecture du système.
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!