Foros del Web » Programando para Internet » PHP »

Variable que soporte 65000 Reg

Estas en el tema de Variable que soporte 65000 Reg en el foro de PHP en Foros del Web. Tengo un script en php que cuando procesa, lo guarda todo en una variable. y despues genera un xls. mi pregunta es la siguiente ya ...
  #1 (permalink)  
Antiguo 05/09/2006, 11:37
Avatar de aRTeX  
Fecha de Ingreso: mayo-2005
Mensajes: 374
Antigüedad: 18 años, 11 meses
Puntos: 0
Variable que soporte 65000 Reg

Tengo un script en php que cuando procesa, lo guarda todo en una variable. y despues genera un xls.

mi pregunta es la siguiente ya que el proceso se me cae.

como puedo instanciar una variable que me soporte bastantes datos!.

eso

Saludos.
  #2 (permalink)  
Antiguo 05/09/2006, 12:26
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
En Principio "PHP" ante un proceso así se "cae" por dos razones:

* Superó tu script el tiempo de ejecución que PHP dá por defeco a un script (30 segundos).

* Tu scritp consumió más memoria de la asignada por defecto a la ejecución de un script (vários Mbytes)

Tú tienes acceso a la configuración de PHP . .como para revisar y/o modificar esos datos?

Por lo demás .. si dices que al final generas un "xls" .. lo ideal sería ya que todo queda en un archivo tal vez ir guardando en bloques de información y así manejar en memória lo menos posible.

Ahora .. piensa también como "Excel" en el PC que lo procese se va a "tragar" esos 65000 o más registros.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 05/09/2006, 12:41
Avatar de the_scorpion  
Fecha de Ingreso: mayo-2006
Ubicación: Cuba
Mensajes: 696
Antigüedad: 17 años, 11 meses
Puntos: 3
Hola

Pregunto:
- Llega a generar el xls

como dice el amigo cluster lo mas probable sea el tiempo de ejecución del script o la memori
digo:
- ejecuta tu phpinfo y echale una ojeada a la variable max_execution_time y memory_limit
__________________
Que hablen mal de uno es espantoso. Pero hay algo peor: que no hablen.
Quien hace, puede equivocarse. Quien nada hace, ya está equivocado".
  #4 (permalink)  
Antiguo 05/09/2006, 13:35
Avatar de aRTeX  
Fecha de Ingreso: mayo-2005
Mensajes: 374
Antigüedad: 18 años, 11 meses
Puntos: 0
lo del tiempo de ejecucion lo he agrandado, puede ser por memoria.

lo que hace el proceso es lo siguiente:

toma los datos necesarios de la base de datos, los cruza con otra base de datos, y al final lo guarda en un archivo xls en una carpeta X.

tambien tenia otro proceso que tenia cabeceras, y cuando lo ejecutaba, solicitaba descargar el archivo. y ese no se me caia, me descargaba el archivo con 65000 sin ningun problema.

yo al fin es que quiero dejar un proceso corriendo en la noche, y que funcione de la siguiente forma:

dejo unos archivos consecutivos numericamente, en una carpeta con nombre X, y cuando corra el proceso tome 1 primero lo procese y genere un archivo en una carpeta de salida, y asi sucesivamente con todos los archivos. pero cuando lo he dejado, se demora demasiado en el primer archivo y se cae. y eso quiero solucionar, y no se que puede ser!!


aaa lo ttro, yo lo he probado con pocos datos y funciona bien, pero cuando excedo una cantidad de registros se cae, pero no se especificamente desde cuantos mas registros se cae.

Scorpion, no encuentro donde diga "Memory_Limit"

Saludos.

Última edición por aRTeX; 05/09/2006 a las 13:46 Razón: por que me falto algo
  #5 (permalink)  
Antiguo 05/09/2006, 14:13
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Iniciado por aRTeX Ver Mensaje
lo del tiempo de ejecucion lo he agrandado, puede ser por memoria.

lo que hace el proceso es lo siguiente:

toma los datos necesarios de la base de datos, los cruza con otra base de datos, y al final lo guarda en un archivo xls en una carpeta X.

tambien tenia otro proceso que tenia cabeceras, y cuando lo ejecutaba, solicitaba descargar el archivo. y ese no se me caia, me descargaba el archivo con 65000 sin ningun problema.

yo al fin es que quiero dejar un proceso corriendo en la noche, y que funcione de la siguiente forma:

dejo unos archivos consecutivos numericamente, en una carpeta con nombre X, y cuando corra el proceso tome 1 primero lo procese y genere un archivo en una carpeta de salida, y asi sucesivamente con todos los archivos. pero cuando lo he dejado, se demora demasiado en el primer archivo y se cae. y eso quiero solucionar, y no se que puede ser!!


aaa lo ttro, yo lo he probado con pocos datos y funciona bien, pero cuando excedo una cantidad de registros se cae, pero no se especificamente desde cuantos mas registros se cae.

Scorpion, no encuentro donde diga "Memory_Limit"

Saludos.
Cita:
Scorpion, no encuentro donde diga "Memory_Limit"
En tu php.ini

Por cierto .. por qué haces este proceso con PHP? No usas ningún GUI para Msyql algo tipo (windows): Navicat, EMS Mysql Manager o similar? (estos permiten exportar tus datos de tus consultas SQL realizadas a diferentes formatos .. entre ellos .xls nativos). Podrías probarlos ..

También probar de realizar el proceso hacia un CSV desde comandos de Mysql directos.

Recuerda que PHP es un lenguaje "interpretado", así que el rendimiento para este tipo de procesos no será igual que una aplicación "compilada" pueda hacer.

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 05/09/2006, 15:51
Avatar de aRTeX  
Fecha de Ingreso: mayo-2005
Mensajes: 374
Antigüedad: 18 años, 11 meses
Puntos: 0
bueno php por que lo se manejar, y por que es uno de los lenguajes que me gusta!, por lo que al proceso se refiere, no es para que yo solamente lo maneje si no que lo va a manejar un usuario con conocimientos basicos
  #7 (permalink)  
Antiguo 05/09/2006, 15:59
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Iniciado por aRTeX Ver Mensaje
bueno php por que lo se manejar, y por que es uno de los lenguajes que me gusta!, por lo que al proceso se refiere, no es para que yo solamente lo maneje si no que lo va a manejar un usuario con conocimientos basicos
Sólo como observación .. a veces no por qué tal lenguaje te guste ha de ser lo "mejor", te lo dice un fanático de PHP como yo. Eso sí .. tengo bien claro las limitaciones de PHP.

Podrías probar la versión "SQL sólo o comando de tu BBDD por consola" (consulta en el foro de BBDD mejor) .. así podrías lanzar tu proceso en un ".bat" (o shell script) que llamar sólo (incluso bajo una "Tarea programada" si usas windows o "Cron Job" (caso de usar windows). Este proceso debería ser muchooo más rápido que hacerlo bajo PHP .. el mismo proceso podrías lanzarlo desde PHP también (con funciones como exec() y afines una vez que tengas claro el "comando" a ejecutar).

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
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 05:22.