Foros del Web » Programando para Internet » PHP »

Como saber cuando me voy a quedar sin memoria

Estas en el tema de Como saber cuando me voy a quedar sin memoria en el foro de PHP en Foros del Web. Hola a todos. Tengo un problemilla con un módulo de PHP. Me baje una clase para trabajar con imágenes y asi poder reajustar su tamaño ...
  #1 (permalink)  
Antiguo 19/06/2006, 07:29
Avatar de Smolky  
Fecha de Ingreso: mayo-2006
Ubicación: Cartagena
Mensajes: 177
Antigüedad: 17 años, 10 meses
Puntos: 14
Como saber cuando me voy a quedar sin memoria

Hola a todos.

Tengo un problemilla con un módulo de PHP. Me baje una clase para trabajar con imágenes y asi poder reajustar su tamaño cuando se suben al servidor. Todo funciona correctamente pero cuando la imágen ocupa mucho obtengo el típico error de Allowed memory size

Mi pregunta es la siguiente: ¿Como podría calcular yo la memoria que va a ocupar realizar esa operación? y asi poder mostrar un resultado controlado por PHP antes de ejecutar la clase.

Supongo que es no es simplemente con comprar el tamaño físico de la imágen, porque la clase trabajan con la imágen sin ningún tipo de compresión. Buscando leí algo de que hay que calcular ancho * alto * calidad (o algo asi) y luego multiplicarlo por dos para calcular este tamaño, ya que PHP tiene en memoria dos imágenes a la vez mientras realiza el proceso (la original y la sampleada)

Alguien me podría explicar esto un poco?


Espero que este clara la explicación, si no, decidmelo e intento explicarme un poco mejor
__________________
No hay cuerda desafinada sino músico progresivo
  #2 (permalink)  
Antiguo 28/06/2006, 06:46
Avatar de Smolky  
Fecha de Ingreso: mayo-2006
Ubicación: Cartagena
Mensajes: 177
Antigüedad: 17 años, 10 meses
Puntos: 14
Hola, buscando un poco soluciones alternativas a mi problema encontré la posibilidad de instalar las extensiones de Imagemagick en el servidor PHP y ajustar las imágenes usando un programa externo, de esta forma, no habrá ningun problema de memoria no?

Alguien ha usado este sistema? puede comentarme algo sobre esto?
__________________
No hay cuerda desafinada sino músico progresivo
  #3 (permalink)  
Antiguo 28/06/2006, 07:08
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 2 meses
Puntos: 129
Desde PHP no tienes función para ver la memoría "libre" .. además que PHP restringe el uso de memoria para tus scripts y así define en cierta directiva de tu php.ini ...

Si vas a usar ImageMagick como aplicación externa (por qué también se puede instalar como extensión para PHP aportando a este todo el juego de funciones tipo xxxx_yyy() como sucede con otras extensiones ...), las restricciones de memoria por parte de PHP no deberían de aplicarse pues lo "normal" será que en esos casos tu "mandes" a generar una imagen en un archivo directamente .. Tendrás los mismos problemas de memoria si pretendes trabajar tus imagenes sin generar esos archivos físicamente (por ejemplo cuando se hace todo el proceso dinámicamente de generación de la imagen para entregar a descargar directamente componiento tu trabajo sobre variables en PHP ..).

El caso es que .. lo pruebes tu mismo en función de lo que tengas que hacer. Sólo te comento que el proceso en general de ImageMagick es mucho más rápido que GD trabajado como extensión/librería en la mayoría de casos, pero requiere de otro tipo de requisitos de PHP también (no todo es maravilloso). Por ejemplo necesitas ejecutar PHP -no- en modo "Safe mode" (no modo seguro) para que puedas ejecutar vía "exec()" y funciones afines los ejecutables de ImageMagick ...

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #4 (permalink)  
Antiguo 03/07/2006, 05:31
Avatar de Smolky  
Fecha de Ingreso: mayo-2006
Ubicación: Cartagena
Mensajes: 177
Antigüedad: 17 años, 10 meses
Puntos: 14
Hola gracias por la respuesta

Te voy a explicar lo que pretendo hacer a ver cual de las opciones me recomiendas:

Yo tengo un formulario donde el usuario da de alta una ficha con datos de un producto, aparte de tener que seleccionar varias imágenes para el catálogo del producto.

Mi idea es que, por cada imágen que suba el cliente, dentro del servidor se generen dos copias, una dentro de una carpeta llamada thumb con un tamaño más pequeño, y la otra a un tamaño máximo de 600 pixels de ancho (si es más pequeña, que respete el tamaño original)

Ahora mismo hago eso mediante GD, el problema es que si el tamaño de la imágen es muy alto (sobre 300 kbs) tengo un error de PHP y pienso que si ejecuto una aplicación, o una extensión de PHP y se encarga el mismo servidor de ajustar la imágen no tendre ese problema no? y podré ajustar imágenes de mucho más tamaño.

Lo de ejecutar el SafeMode en principio no sería un problema


Muchas gracias por tu respuesta
__________________
No hay cuerda desafinada sino músico progresivo
  #5 (permalink)  
Antiguo 03/07/2006, 10:31
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 2 meses
Puntos: 129
En ese caso .. usa ImageMagick en lugar de GD para tratar tus imagenes.

ImageMagick tendrás que instalarla en tu servidor y correrla como ejecutable externo a PHP (he de ahí que el rendimiento y proceso no dependerá tanto de restricciones de PHP).

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #6 (permalink)  
Antiguo 04/07/2006, 01:18
Avatar de Smolky  
Fecha de Ingreso: mayo-2006
Ubicación: Cartagena
Mensajes: 177
Antigüedad: 17 años, 10 meses
Puntos: 14
Entonces, ¿el rendimiento de ImageMagick varia mucho de usarlo como un ejecutable para tratar las imágenes que usandolo como extensión de PHP?

Me refiero a que si, ¿usandolo como extensión esta sujeto a las mismas limitaciones de memoria que el GD y va guardando los procesos en memoria, o ejecuta todas las acciones con las imágenes externamente?


Muchas gracias
__________________
No hay cuerda desafinada sino músico progresivo
  #7 (permalink)  
Antiguo 04/07/2006, 06:29
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 2 meses
Puntos: 129
Cita:
Iniciado por Smolky
Entonces, ¿el rendimiento de ImageMagick varia mucho de usarlo como un ejecutable para tratar las imágenes que usandolo como extensión de PHP?

Me refiero a que si, ¿usandolo como extensión esta sujeto a las mismas limitaciones de memoria que el GD y va guardando los procesos en memoria, o ejecuta todas las acciones con las imágenes externamente?


Muchas gracias
Así es .. Si tu ejecutas ImageMagick como extensión (y usando las extensiones de PHP para ImageMagick sólo las librerías de este) .. estás sujeto a las restricciones de PHP principalmente. Si tu ejecutas ImageMagick como un ejecutable externo .. en principio con PHP sólo "pides" el proceso, este se ejectua e incluso para estos casos y evitar pasar lo más posible por PHP .. generas un archivo del resultado del proceso (para su posterior proceso).

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #8 (permalink)  
Antiguo 04/07/2006, 06:57
Avatar de Smolky  
Fecha de Ingreso: mayo-2006
Ubicación: Cartagena
Mensajes: 177
Antigüedad: 17 años, 10 meses
Puntos: 14
Muchas gracias, voy a empezar a experimentar a ver que sale
__________________
No hay cuerda desafinada sino músico progresivo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:18.