Maison  >  Article  >  développement back-end  >  Quelle est la longueur maximale d’une chaîne en PHP ?

Quelle est la longueur maximale d’une chaîne en PHP ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-01 04:54:02794parcourir

What is the Maximum Length of a String in PHP?

La longueur maximale d'une chaîne en PHP

En PHP, la longueur d'une chaîne est limitée par la mémoire disponible dans le système. La taille maximale d'une chaîne dépend de la plate-forme, les versions 64 bits étant capables de gérer des chaînes arbitrairement grandes.

Dans PHP 5.x, les chaînes étaient limitées à 231-1 octets, car la longueur était stockée dans un entier signé de 32 bits. Cependant, cette limitation a été supprimée dans PHP 7.0.0.

Considérations pratiques

Bien que les chaînes puissent être arbitrairement grandes, la mémoire totale allouée à toutes les variables dans l'exécution d'un seul script est toujours limitée par la directive memory_limit dans php.ini. Cette limite est généralement définie sur 128 Mo dans PHP 5.2 et 8 Mo dans les versions antérieures.

Si la limite de mémoire n'est pas explicitement définie dans php.ini, la valeur par défaut est utilisée, qui varie en fonction de la configuration du binaire PHP. Définir la limite de mémoire sur -1 désactive effectivement cette vérification et permet au script d'utiliser autant de mémoire que possible.

Exemple concret

Le script PHP suivant illustre la relation entre la limite de mémoire et la taille de la chaîne :

<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));

// Allocate a string of 255KB
$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));

// Attempting to allocate a string larger than the memory limit will cause a fatal error
$str = str_repeat('a', 256*1024);
echo "Allocated string of 256KB\n";
printf("memory: %d\n", memory_get_usage(true));</code>

Lors de son exécution, ce script affichera :

memory: 768000
Allocated string of 255KB
memory: 1023952

Cela démontre que la mémoire allouée atteint la limite une fois que la chaîne atteint 255 Ko . Tenter d'attribuer une chaîne plus grande entraînera une erreur fatale.

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