"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Quelle peut être la taille d’une chaîne en PHP ?

Quelle peut être la taille d’une chaîne en PHP ?

Publié le 2024-11-09
Parcourir:405

How Large Can a String Be in PHP?

Quelle est la limite supérieure de la longueur des chaînes en PHP ?

Requête :
Pouvez-vous nous éclairer sur les limites de la capacité de stockage de chaînes en PHP ? J'ai essayé de l'évaluer, mais je ne sais pas si la mémoire de mon système (2 Go) est adéquate pour le test. Y a-t-il un plafond prédéfini ? Quelles actions se produisent lorsqu'une chaîne dépasse ce seuil – concaténation ou erreur ?

Réponse :
Selon la documentation de PHP.net, les restrictions de longueur de chaîne ont été éliminées dans PHP 7.0.0. pour les versions 64 bits. Pour les versions 32 bits et les versions antérieures, les chaînes pouvaient atteindre une taille maximale de 2 Go (2 147 483 647 octets).

Dans PHP 5.x, les chaînes étaient limitées à 231-1 octets car le code interne suivait leur longueur dans un entier signé de 32 bits.

Considérations supplémentaires :
Vous pouvez charger le contenu entier d'un fichier à l'aide de fonctions telles que file_get_contents(). Cependant, l'allocation globale de mémoire d'un script PHP pour toutes les variables limite la longueur des variables de chaîne individuelles.

Directive de limite de mémoire :
La directive memory_limit dans le fichier de configuration php.ini définit ceci limite. Sa valeur par défaut est de 128 Mo dans PHP 5.2 et de 8 Mo dans les versions antérieures.

Si memory_limit n'est pas défini dans php.ini, la valeur par défaut est la valeur compilée dans le binaire PHP, qui peut être modifiée en recompilant PHP avec une valeur par défaut personnalisée. .

Définir memory_limit sur -1 dans php.ini désactive la vérification et permet à votre script d'utiliser autant de mémoire que le système d'exploitation alloue (toujours soumis à des contraintes pratiques et spécifiques au système).

Exemple de test :
Le code suivant montre comment tester l'utilisation de la mémoire et les limites d'allocation de chaînes :

// Limit memory usage to 1MB
ini_set('memory_limit', 1024*1024);

// Basic operation uses about 768KB
printf("memory: %d\n",  memory_get_usage(true));

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

// All 1MB of memory has been allocated
printf("memory: %d\n",  memory_get_usage(true));

// Exceeding the limit causes a fatal error
$str = str_repeat('a',  256*1024);
echo "Allocated string of 256KB\n";
printf("memory: %d\n",  memory_get_usage(true));
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3