Maison  >  Article  >  développement back-end  >  Quelle est la limite maximale de longueur de chaîne en PHP et comment est-elle affectée par les limitations de mémoire ?

Quelle est la limite maximale de longueur de chaîne en PHP et comment est-elle affectée par les limitations de mémoire ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-31 22:55:29264parcourir

What is the maximum string length limit in PHP, and how is it affected by memory limitations?

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!

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