Ce message d'erreur est présenté, des suggestions?
La taille de mémoire autorisée de 33554432 octets est épuisée (a tenté d'allouer 43148176 octets) en php
php
memory-management
memory-limit
panidarapu
la source
la source
Réponses:
J'ai enfin trouvé la réponse:
Ajoutez simplement cette ligne ci-dessous à la ligne avant que vous n'obteniez une erreur dans votre fichier
ini_set('memory_limit', '-1');
Il faudra une utilisation illimitée de la mémoire du serveur, cela fonctionne bien.
Merci d'avoir donné des suggestions d'amis.
la source
UNLIMITED
.Voici deux méthodes simples pour augmenter la limite d'hébergement mutualisé:
Si vous avez accès à votre fichier PHP.ini, changez la ligne dans PHP.ini Si votre ligne affiche 32M, essayez 64M:
memory_limit = 64M ; Maximum amount of memory a script may consume (64MB)
Si vous n'avez pas accès à PHP.ini, essayez de l'ajouter à un fichier .htaccess:
php_value memory_limit 64M
la source
Votre script utilise trop de mémoire. Cela peut souvent se produire en PHP si vous avez une boucle qui est hors de contrôle et que vous créez des objets ou ajoutez des tableaux à chaque passage de la boucle.
Vérifiez les boucles infinies.
Si ce n'est pas le problème, essayez d'aider PHP en détruisant les objets avec lesquels vous avez terminé en les définissant sur null. par exemple.
$OldVar = null;
Vérifiez également le code dans lequel l'erreur se produit. Vous attendriez-vous à ce que cette ligne alloue une énorme quantité de mémoire? Sinon, essayez de comprendre ce qui ne va pas ...
la source
Faire :
n'est jamais bon. Si vous souhaitez lire un fichier très volumineux, il est recommandé de le copier petit à petit. Essayez le code suivant pour les meilleures pratiques.
la source
while
boucle:fclose($file)
Il est malheureusement facile de programmer en PHP d'une manière qui consomme de la mémoire plus rapidement que vous ne le pensez. Copier des chaînes, des tableaux et des objets au lieu d'utiliser des références le fera, bien que PHP 5 soit censé le faire plus automatiquement qu'en PHP 4. Mais traiter l'ensemble de vos données en plusieurs étapes est également un gaspillage par rapport au traitement de la plus petite unité logique. à la fois. L'exemple classique fonctionne avec des ensembles de résultats volumineux à partir d'une base de données: la plupart des programmeurs récupèrent l'intégralité de l'ensemble de résultats dans un tableau, puis le bouclent une ou plusieurs fois avec
foreach()
. Il est beaucoup plus efficace en mémoire d'utiliser unewhile()
boucle pour extraire et traiter une ligne à la fois. La même chose s'applique au traitement d'un fichier.la source
Si vous souhaitez lire des fichiers volumineux, vous devez les lire petit à petit au lieu de les lire immédiatement.
C'est un calcul simple: si vous lisez un gros fichier de 1 Mo à la fois, au moins 1 Mo de mémoire est nécessaire en même temps pour contenir les données.
Vous devez donc les lire petit à petit en utilisant
fopen
&fread
.la source
$fh = fopen($folder.'/'.$filename, "rb") or die(); $buffer = 1024*1024; while (!feof($fh)) { print(fread($fh, $buffer)); flush(); } fclose($fh);
J'ai rencontré le même problème dans php7.2 avec laravel 5.6. J'augmente simplement la quantité de variable
memory_limit = 128M
dans php.ini à la demande de mes applications. Il pourrait être 256M / 512M / 1048M ..... Maintenant, cela fonctionne bien.la source
J'avais aussi le même problème, j'ai cherché des fichiers phpinfo.ini, php.ini ou .htaccess en vain. Enfin, j'ai regardé certains fichiers php, les ai ouverts et vérifié les codes à l'intérieur pour la mémoire. Enfin, cette solution a été ce que je suis sorti et cela a fonctionné pour moi. J'utilisais wordpress, donc cette solution pourrait ne fonctionner que pour un problème de limite de taille de mémoire wordpress. Ma solution, ouvrez le fichier default-constants.php dans le dossier / public_html / wp-includes . Ouvrez ce fichier avec l'éditeur de code et recherchez les paramètres de mémoire sous la
wp_initial_constants
portée, ou tout simplement Ctrl + F pour trouver le mot "mémoire". Là, vous viendrezWP_MEMORY_LIMIT
etWP_MAX_MEMORY_LIMIT
. Il suffit de l'augmenter, il était de 64 Mo dans mon cas, je l'ai augmenté à 128 Mo puis à 200 Mo.Btw, veuillez ne pas faire le code suivant, car c'est une mauvaise pratique:
la source
wp-config.php
place, où elles ne seront pas écrasées par les futures mises à jour de WordPress. De plus, quelques plugins de sécurité (tels que WordFence, par exemple) se plaindront si les fichiers WordPress `` principaux '' sont modifiés ...wp-config.php
et d'ajouter les deux lignes là-bas (c'est-à-diredefine( 'WP_MEMORY_LIMIT', '200M' );
etdefine( 'WP_MAX_MEMORY_LIMIT', '256M' );
. Contrairement aux fichiers sur le WP «de base» (à savoir, tout ce qui se trouve souswp-includes
), qui seront écrasés par les mises à niveau de WP,wp-config.php
ne le seront pas - il est là exactement pour le but exact de remplacer les constantes WP!-1
convient parfaitement aux processus à court terme. Par exemple, un conteneur de constructeur php utilisé pour exécuter des tests unitaires ou des installations de composeur / etc. Ne faites pas fonctionner votre site de production avec ce jeu comme ça.Vous pouvez augmenter la mémoire autorisée pour le script php en exécutant la ligne suivante au-dessus de tous les codes du script:
Et également allouer les variables indésirables dans le script.
Vérifiez cette bibliothèque php: Libérer de la mémoire avec PHP
la source
la source
Je remarque que de nombreuses réponses essaient simplement d'augmenter la quantité de mémoire accordée à un script qui a sa place, mais le plus souvent cela signifie que quelque chose est trop libéral avec la mémoire en raison d'une quantité imprévue de volume ou de taille. Évidemment, si vous n'êtes pas l'auteur d'un script, vous êtes à la merci de l'auteur, sauf si vous vous sentez ambitieux :) Les documents PHP disent même que les problèmes de mémoire sont dus à des " scripts mal écrits "
Il convient de mentionner que
ini_set('memory_limit', '-1');
(pas de limite) peut provoquer une instabilité du serveur comme0 bytes free = bad things
. Au lieu de cela, trouvez un équilibre raisonnable par ce que votre script essaie de faire et la quantité de mémoire disponible sur une machine.Une meilleure approche: si vous êtes l'auteur du script (ou ambitieux), vous pouvez déboguer de tels problèmes de mémoire avec xdebug . La dernière version (2.6.0 - publiée le 2018-01-29) a ramené le profilage de la mémoire qui vous montre quels appels de fonction consomment de grandes quantités de mémoire. Il expose des problèmes dans le script qui sont autrement difficiles à trouver. Habituellement, les inefficacités sont dans une boucle qui n'attend pas le volume qu'il reçoit, mais chaque cas sera laissé au lecteur comme un exercice :)
La documentation de xdebug est utile, mais elle se résume à 3 étapes:
apt-get
etyum
etcxdebug.profiler_enable = 1
,xdebug.profiler_output_dir = /where/ever/
la source
Si vous essayez de lire un fichier, cela prendra de la mémoire en PHP. Par exemple, si vous essayez d'ouvrir et de lire un fichier MP3 (comme, par exemple, $ data = file (" http://mydomain.com/path/sample.mp3 "), il va tout mettre en mémoire .
Comme le suggère Nelson, vous pouvez travailler pour augmenter votre limite de mémoire maximale si vous avez réellement besoin d'utiliser autant de mémoire.
la source
Nous avons eu une situation similaire et nous avons essayé donné en haut des réponses ini_set ('memory_limit', '-1'); et tout fonctionnait bien, les fichiers d'images compressées supérieurs à 1 Mo en Ko.
la source
Écrire
ini_set('memory_limit', '-1');
dans votre index.php en haut après l'ouverture de la balise php
la source
Je recevais le même message d'erreur après être passé à un nouveau thème dans Wordpress. PHP exécutait la version 5.3, je suis donc passé à 7.2. Cela a résolu le problème.
la source
Si vous utilisez un hébergement partagé, vous ne pourrez pas appliquer l'incrément dans la limite de taille php.
Accédez simplement à votre cpanel et mettez à niveau votre version php vers 7.1 et au-dessus, alors vous êtes prêt à partir.
la source
les utilisateurs de wordpress ajoutent une ligne:
@ini_set('memory_limit', '-1');
dans wp-settings.php que vous pouvez trouver dans le dossier racine installé de wordpress
la source
Je n'avais pas renouvelé mon hébergement et la base de données était en lecture seule. Joomla avait besoin d'écrire la session et n'a pas pu le faire.
la source
J'ai eu le même problème que l'exécution de php en ligne de commande. Récemment, j'ai changé le fichier php.ini et j'ai fait une erreur en changeant le php.ini
C'est pour php7.0
J'avais défini
memory_limit = 256
(ce qui signifie256 bytes
)au lieu de
memory_limit = 256M
(ce qui signifie256 Mega bytes
).Une fois que je l'ai corrigé, mon processus a commencé à bien fonctionner.
la source
Exécutez cette commande dans votre répertoire racine Magento
php -d memory_limit=4G bin/magento
la source
si vous utilisez laravel, utilisez ces méthodes
public function getClientsListApi(Request $request){ print_r($request->all()); //for all request print_r($request->name); //for all name }
au lieu de
public function getClientsListApi(Request $request){ print_r($request); // it show error as above mention }
la source