Jump to content

SOLUCIONADO: Fatal error: Out of memory al generar combinaciones de atributos


Recommended Posts

Hola a todos.
 
 
Llevo unos días recorriendo los foros en busca de una solución a mi problema, pero parece ser que tengo "algo" que no se soluciona así como así.

El síntoma es bastante común: Pantalla en blanco, concretamente al generar combinaciones de cierta complejidad en los productos.
 
Al habilitar ini_set('display_errors', 'on'); aparece el típico mensaje:
Fatal error: Out of memory (allocated 122683392) (tried to allocate 32 bytes) in /home/visionic/public_html/classes/db/DbPDO.php on line 91

 

 

Después de revisar todos los hilos relacionados, he realizado las siguientes acciones:

  • Comprobación de límite de memoria en servidor (VPS con SSD)
    • En principio estaba limitado por el servidor a 512Mb
    • Testeado aumento a 2 Gb, sin resultado, el error permanece.
    • Comprobado en PHP.ini y config.inc.php: límite consolidado en 512Mb
    • En útima instancia hemos probado a subir la memoria hasta 3,5 Gb... nada :(
  • Base de Datos:
    • Reparado MySQL, sin resultado, el error permanece.
    • Backup y reaturada en nueva DB, sin resultado, el error permanece.
  • Administración de rendimiento:
    • Desactivada compilación.
    • Cache deshabilitada
    • Desactivadas Características de los productos (no se usan en esta tienda)
    • Desactivados y desinstalados módulos no utilizados. Los que quedan activos no son demasiados, los normales en cualquier tienda, incluidos los del theme.
    • CCC configurado tal como se recomienda en varios hilos relacionados con el problema:
      • Utilizar CCC para las hojas de estilo
      • Utilizar CCC para el código de JavaScript
      • Reducir el código HTML después de la complilación Smarty
      • Conservar el código JavaScript original
      • Optimizar Apache
      • Algoritmo:
        • Utilizar Rijndael con la librería mcript.

Creo que no me olvido nada... :P

 

La URL de la tienda es http://visionical.com

Ejemplo de producto con error en el Front: 

http://visionical.es/lentillas/mensuales/30-proclear-toric-xr-pack-3.html

 

Versión de Prestahop: 1.5.6.2

El teme utilizado: Transformer comprado en ThemeForest (link)

 

Por último apuntar que es una web desarrollada para un tercero, y que los problemas han empezado en el momento que éste (profano en "estos asuntos" de la informática) ha comenzado a introducir productos. De ahí que en principio pensara que posiblemente el problema pudiera deberse a registros corruptos en la DB o algo así.

 

Al realizar copia de seguridad con el propio prestashop, también aparece ese error.

 

Descartado todo esto me he quedado sin ideas...

 

 

Gracias por vuestra ayuda.

 

 

Saludos.

Edited by jclaguna (see edit history)
Link to comment
Share on other sites

Finalmente parece que es un problema de registros de la DB. Al parecer hay atributos (o sus valores, aun no lo sabemos), que han generado registros corruptos y al generar combinaciones que utilicen estos atributos el proceso se eterniza y al final (curioso) devuelve un 404 desde el FrontEnd.

 

Si observáis la captura en la barra de navegación se puede ver que estamos trabajando en el BO pero el error nos lleva a la parte pública de la web.

 

404.jpg

 

 

Seguimos investigando, cuando encontremos la solución lo postearemos.

 

 

Saludos.

Edited by jclaguna (see edit history)
Link to comment
Share on other sites

Descartado el problema de registros incorrectos en DB. Se han vuelto a generar desde cero y el problema persiste. Al añadir un producto "dummy" e intentar generar combinaciones complejas con los nuevos atributos con un cierto número de valores devuelve el siguiente error:

 

Fatal error: Out of memory (allocated 131334144) (tried to allocate 7680 bytes) in /home/visionic/public_html/controllers/admin/AdminAttributeGeneratorController.php(69) : runtime-created function on line 1

 

 

¿Alguna idea?  :(

Link to comment
Share on other sites

Buenas compi, esto lo as intentado? http://victor-rodenas.com/2012/03/17/falta-error-out-of-memory-en-prestashop/

Salu2

 

Si no crea un archivo en el directoria principal de prestashop con el nombre php.ini y metele esto dentro

<?php
phpinfo();
?>

guarda los cambios. Y cuando lo tengas, hecho avisanos que le echemos un ojito.

Salu2

Edited by JavierP (see edit history)
  • Like 1
Link to comment
Share on other sites

 

 

Hola.

 

Desde luego que lo hemos intentado, la web está en un VPS y lo hemos llegado a configurar con 3.5Gb de límite de memoria para descartar esa posibilidad.

 

Ahora mismo está con 512Mb que estimamos le sobra por arriba de la cabeza para esto.

 

Ahora estamos borrando todos los atributos y sus valores para reintroducirlos de nuevo, veremos que tal va.

 

 

Saludos.

Link to comment
Share on other sites

Hola.

 

Desde luego que lo hemos intentado, la web está en un VPS y lo hemos llegado a configurar con 3.5Gb de límite de memoria para descartar esa posibilidad.

 

Ahora mismo está con 512Mb que estimamos le sobra por arriba de la cabeza para esto.

 

Ahora estamos borrando todos los atributos y sus valores para reintroducirlos de nuevo, veremos que tal va.

 

 

Saludos.

Ok haz esto, crea un archivo en el directoria principal de prestashop con el nombre php.ini y metele esto dentro

<?php
phpinfo();
?>

guarda los cambios. Y cuando lo tengas, hecho avisanos que le echemos un ojito.

Salu2

Link to comment
Share on other sites

El php.ini esta generado. Contiene lo siguiente:

 

 

 
register_globals = Off
allow_url_include = Off
safe_mode = Off
safe_mode_gid = Off
 
; Disable PHP magic quotes
magic_quotes_gpc = Off
magic_quotes_runtime = Off
magic_quotes_sybase = Off
; Load PDO MySQL extension
extension=pdo.so
extension=pdo_mysql.so
 
file_uploads = On
upload_max_filesize = 128M
 
max_execution_time = 3600
max_input_time = 600
memory_limit = 512M
 
 
¿Borro todo esto y lo dejo como dices tu?
Link to comment
Share on other sites

 

Ok haz esto, crea un archivo en el directoria principal de prestashop con el nombre php.ini y metele esto dentro

<?php
phpinfo();
?>

guarda los cambios. Y cuando lo tengas, hecho avisanos que le echemos un ojito.

Salu2

 

 

Ok.

 

 

Esta hecho

 

 

a ver lo que ves...

Link to comment
Share on other sites

 

El php.ini esta generado. Contiene lo siguiente:

 

 

 
register_globals = Off
allow_url_include = Off
safe_mode = Off
safe_mode_gid = Off
 
; Disable PHP magic quotes
magic_quotes_gpc = Off
magic_quotes_runtime = Off
magic_quotes_sybase = Off
; Load PDO MySQL extension
extension=pdo.so
extension=pdo_mysql.so
 
file_uploads = On
upload_max_filesize = 128M
 
max_execution_time = 3600
max_input_time = 600
memory_limit = 512M
 
 
¿Borro todo esto y lo dejo como dices tu?

 

register_globals = Off
allow_url_include = Off
safe_mode = Off
safe_mode_gid = Off
 
; Disable PHP magic quotes
magic_quotes_gpc = Off
magic_quotes_runtime = Off
magic_quotes_sybase = Off
; Load PDO MySQL extension
extension=pdo.so
extension=pdo_mysql.so
 
file_uploads = On
upload_max_filesize = 128M
 
max_execution_time = 8600
max_input_time = 8600
memory_limit = 512M
max_input_vars = 8000
  • Like 2
Link to comment
Share on other sites

Supongo que la clave esta en el max_input_vars...

 

¿Es porque se comporta del mismo modo que la asignación de memoria?

 

Quiero decir, defines el parámetro en el servidor (esto ya tuvimos que tocarlo para las traducciones) pero... ¿también hay que definirlo en el php.ini?

 

El caso es que parece que va tirando bien... :)  en cuanto certifique con pruebas límite marcaré el hilo como resuelto... ahora tengo parque con mis hijos... :)

 

 

 

Millones de gracias...!

Link to comment
Share on other sites

Buenas.
 
Me revienta tener que decir que de momento el problema persiste.
 
Al intentar generar combinaciones de productos con cierta complejidad se tira como 10 minutos pensando y al final 404.
 
Pongo detalles de los atributos y sus valores. Con la siguiente combinación es cuando da el error:

 

Atributo: Nº valores

  • Ojo: 3 Valores
  • Curva Base: 1 Valor
  • Diámetro: 1 Valor
  • Dioptrías: 61 Valores
  • Cilindro: 4 Valores
  • Eje: 18 Valores

 

Entiendo que es una combinación de cierta complejidad (3x61x4x18) pero vaya, nada que una buena rutina de Js no pueda ejecutar con margen de tiempo. El php.ini está tal como me aconsejó el compañero JavierP.

 

Estoy pensando en probar con otro framework y rehacer el proyecto desde cero.

 

Tampoco veo porque es necesario generar TODAS las combinaciones antes de configurar el producto. ¿Porque no se genera la combinación en el momento de crear el carrito con las opciones que el cliente escoja? 

 

Hay muchas cosas de prestashop que no entiendo, espero poder ir especializándome con el tiempo...

 

Gracias y saludos.

Edited by jclaguna (see edit history)
Link to comment
Share on other sites

Buenas

 

Al final hemos conseguido eliminar límites de recursos por completo via software y desde el servidor (gracias Cubenode..!). Conseguimos generar las combinaciones pero el proceso se toma así como una hora para generar los 13.000 y pico registros necesarios para según qué productos. Con esto, no es viable entregar al cliente la web en esas condiciones de uso. Por lo que finalmente vamos a probar con el Attribute Wizard Pro.

 

Me parece una carencia imperdonable de prestashop, esa limitación de no poder, simplemente, mostrar un desplegable con los valores de los atributos y que el cliente a la hora de realizar el pedido sea quien genere esa ÚNICA combinación. Hacerlo así supondría un ahorro de tiempo de desarrollo y de recursos de servidor, en estos casos, más que importantes.

 

 

En fin... una vez hayamos validado que con el plugin se soluciona la cosa daremos el hilo por solventado.

 

 

Saludos.

Edited by jclaguna (see edit history)
Link to comment
Share on other sites

  • 2 weeks later...

Bueno, problema resulto gracias al Atibute Wizard Pro. 

 

Este módulo hace lo que es normal y que Prestashop no hace, genera la combinación de valores de atributos SOLO cuando el cliente selecciona las opciones de su producto... lógico...

 

 

Sintiéndolo mucho he de decir que pocas tiendas más con Prestashop voy a montar...

 

 

Saludos y gracias a todos

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...