Este mensaje de error se presenta, ¿alguna sugerencia?
Tamaño de memoria permitido de 33554432 bytes agotados (intentó asignar 43148176 bytes) en php
php
memory-management
memory-limit
panidarapu
fuente
fuente
Respuestas:
Por fin encontré la respuesta:
Solo agregue esto debajo de la línea anterior a la línea en la que obtiene un error en su archivo
ini_set('memory_limit', '-1');
Tomará un uso ilimitado de la memoria del servidor, está funcionando bien.
Gracias por dar sugerencias amigos.
fuente
UNLIMITED
.Aquí hay dos métodos simples para aumentar el límite de alojamiento compartido:
Si tiene acceso a su archivo PHP.ini, cambie la línea en PHP.ini Si su línea muestra 32M intente 64M:
memory_limit = 64M ; Maximum amount of memory a script may consume (64MB)
Si no tiene acceso a PHP.ini intente agregar esto a un archivo .htaccess:
php_value memory_limit 64M
fuente
Tu script está usando demasiada memoria. Esto a menudo puede suceder en PHP si tiene un bucle que se ha quedado sin control y está creando objetos o agregándolos a matrices en cada pasada del bucle.
Verifica los bucles infinitos.
Si ese no es el problema, intente ayudar a PHP destruyendo objetos con los que haya terminado configurándolos como nulos. p.ej.
$OldVar = null;
Verifique también el código donde ocurre el error. ¿Esperarías que esa línea asigne una gran cantidad de memoria? Si no, intente averiguar qué salió mal ...
fuente
Haciendo :
nunca es bueno Si desea leer un archivo muy grande, se recomienda copiarlo poco a poco. Pruebe el siguiente código para las mejores prácticas.
fuente
while
ciclo:fclose($file)
Desafortunadamente, es fácil programar en PHP de una manera que consume memoria más rápido de lo que crees. Copiar cadenas, matrices y objetos en lugar de usar referencias lo hará, aunque se supone que PHP 5 lo hace de manera más automática que en PHP 4. Pero lidiar con su conjunto de datos en varios pasos también es un desperdicio en comparación con el procesamiento de la unidad lógica más pequeña a la vez El ejemplo clásico es trabajar con grandes conjuntos de resultados de una base de datos: la mayoría de los programadores obtienen todo el conjunto de resultados en una matriz y luego lo repiten una o más veces
foreach()
. Es mucho más eficiente en la memoria usar unwhile()
bucle para buscar y procesar una fila a la vez. Lo mismo se aplica al procesamiento de un archivo.fuente
Si desea leer archivos grandes, debe leerlos poco a poco en lugar de leerlos de una vez.
Es matemática simple: si lee un archivo grande de 1 MB a la vez, se necesita al menos 1 MB de memoria al mismo tiempo para almacenar los datos.
Entonces deberías leerlos poco a poco usando
fopen
&fread
.fuente
$fh = fopen($folder.'/'.$filename, "rb") or die(); $buffer = 1024*1024; while (!feof($fh)) { print(fread($fh, $buffer)); flush(); } fclose($fh);
Me he enfrentado al mismo problema en php7.2 con laravel 5.6. Solo aumento la cantidad de variable
memory_limit = 128M
en php.ini según lo exijan mis aplicaciones. Puede ser 256M / 512M / 1048M ..... Ahora funciona bien.fuente
También estaba teniendo el mismo problema, busqué archivos phpinfo.ini, php.ini o .htaccess en vano. Finalmente, miré algunos archivos php, los abrí y verifiqué la memoria de los códigos internos. Finalmente, esta solución fue con lo que salí y funcionó para mí. Estaba usando wordpress, por lo que esta solución solo podría funcionar para el problema de límite de tamaño de memoria de wordpress. Mi solución, abra el archivo default-constants.php en la carpeta / public_html / wp-includes . Abra ese archivo con el editor de código y busque la configuración de memoria bajo el
wp_initial_constants
alcance, o simplemente presione Ctrl + F para encontrar la palabra "memoria". Allí vendrásWP_MEMORY_LIMIT
yWP_MAX_MEMORY_LIMIT
. Simplemente increméntelo, en mi caso era de 64 MB, lo aumenté a 128 MB y luego a 200 MB.Por cierto, no hagas el siguiente código, porque es una mala práctica:
fuente
wp-config.php
lugar, puede agregar esos límites muy fácilmente , donde no se sobrescribirán con futuras actualizaciones de WordPress. Además, algunos complementos de seguridad (como WordFence, por ejemplo) se quejarán si se cambian los archivos 'básicos' de WordPress ...wp-config.php
y agregue las dos líneas allí (es decir,define( 'WP_MEMORY_LIMIT', '200M' );
ydefine( 'WP_MAX_MEMORY_LIMIT', '256M' );
. A diferencia de los archivos en el 'núcleo' WP (es decir, todo lo que está debajowp-includes
), que se sobrescribirá con las actualizaciones de WP,wp-config.php
no lo hará, está allí exactamente para ¡El propósito exacto de anular las constantes de WP!-1
está bien para procesos de ejecución corta. Por ejemplo, un contenedor de creador de php que se utiliza para ejecutar pruebas unitarias o instalaciones de compositor / etc. Simplemente no ejecute su sitio de producción con el conjunto así.Puede aumentar la memoria permitida para el script php ejecutando la siguiente línea sobre todos los códigos en el script:
Y también desasignar las variables no deseadas en el script.
Revisa esta biblioteca php: Liberando memoria con PHP
fuente
fuente
Noto que muchas respuestas solo intentan aumentar la cantidad de memoria dada a un script que tiene su lugar, pero la mayoría de las veces significa que algo está siendo demasiado liberal con la memoria debido a una cantidad de volumen o tamaño imprevisto. Obviamente, si no eres el autor de un script, estás a merced del autor a menos que te sientas ambicioso :) Los documentos de PHP incluso dicen que los problemas de memoria se deben a " scripts mal escritos "
Cabe mencionar que
ini_set('memory_limit', '-1');
(sin límite) puede causar inestabilidad del servidor como0 bytes free = bad things
. En cambio, encuentre un equilibrio razonable entre lo que su script está tratando de hacer y la cantidad de memoria disponible en una máquina.Un mejor enfoque: si usted es el autor del script (o ambicioso), puede depurar tales problemas de memoria con xdebug . La última versión (2.6.0 - lanzada el 29-01-2018) recuperó el perfil de memoria que muestra qué llamadas a funciones consumen grandes cantidades de memoria. Expone problemas en el script que de otro modo serían difíciles de encontrar. Por lo general, las ineficiencias están en un bucle que no espera el volumen que está recibiendo, pero cada caso se dejará como un ejercicio para el lector :)
La documentación de xdebug es útil, pero se reduce a 3 pasos:
apt-get
yyum
etc.xdebug.profiler_enable = 1
,xdebug.profiler_output_dir = /where/ever/
fuente
Si está intentando leer un archivo, eso ocupará memoria en PHP. Por ejemplo, si está intentando abrir y leer un archivo MP3 (como, por ejemplo, $ data = file (" http://mydomain.com/path/sample.mp3 ") lo va a guardar todo en la memoria .
Como sugiere Nelson, puede trabajar para aumentar su límite máximo de memoria si realmente necesita usar tanta memoria.
fuente
Tuvimos una situación similar y probamos en la parte superior de las respuestas ini_set ('memory_limit', '-1'); y todo funcionó bien, archivos de imágenes comprimidas de más de 1 MB a KB.
fuente
Escribir
ini_set('memory_limit', '-1');
en su index.php en la parte superior después de abrir la etiqueta php
fuente
Estaba recibiendo el mismo mensaje de error después de cambiar a un nuevo tema en Wordpress. PHP estaba ejecutando la versión 5.3, así que cambié a 7.2. Eso solucionó el problema.
fuente
Si está utilizando un alojamiento compartido, no podrá imponer el incremento en el límite de tamaño de php.
Simplemente vaya a su cpanel y actualice su versión de php a 7.1 y superior, entonces estará listo.
fuente
los usuarios de wordpress agregan línea:
@ini_set('memory_limit', '-1');
en wp-settings.php que puedes encontrar en la carpeta raíz instalada de WordPress
fuente
No había renovado mi alojamiento y la base de datos era de solo lectura. Joomla necesitaba escribir la sesión y no pudo hacerlo.
fuente
Tuve el mismo problema que ejecutar php en la línea de comandos. Recientemente, tuve cambios en el archivo php.ini e hice un error al cambiar php.ini
Esto es para php7.0
Había establecido
memory_limit = 256
(lo que significa256 bytes
) enlugar de
memory_limit = 256M
(lo que significa256 Mega bytes
).Una vez que lo corregí, mi proceso comenzó a funcionar bien.
fuente
Ejecute este comando en su directorio raíz de Magento
php -d memory_limit=4G bin/magento
fuente
si está usando laravel, use estas formas
public function getClientsListApi(Request $request){ print_r($request->all()); //for all request print_r($request->name); //for all name }
en vez de
public function getClientsListApi(Request $request){ print_r($request); // it show error as above mention }
fuente