Foros del Web » Programando para Internet » PHP »

Insert por "debajo"

Estas en el tema de Insert por "debajo" en el foro de PHP en Foros del Web. Saludos como puedo realizar un insert a la base de datos por "debajo" me explico.. Quiero que me cargue la pagina normal pero que por ...
  #1 (permalink)  
Antiguo 22/09/2006, 13:29
Avatar de Nano_  
Fecha de Ingreso: febrero-2006
Ubicación: Bogotá, Colombia
Mensajes: 1.866
Antigüedad: 14 años
Puntos: 96
Insert por "debajo"

Saludos como puedo realizar un insert a la base de datos por "debajo" me explico.. Quiero que me cargue la pagina normal pero que por debajo se valla realizando el insert a la base de datos..

Que metodo seria el mas factible para desarrollar esto.

GRacias y hasta Pronto
__________________
:.:Nano.:: @nano_hard - Retornando al foro
  #2 (permalink)  
Antiguo 22/09/2006, 13:34
Avatar de ArrauKano  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago
Mensajes: 664
Antigüedad: 17 años, 3 meses
Puntos: 4
si te refieres a enviar ejecutar la consulta sin que la pag mencione nada de la consulta sql, no es + que hacer los pasos habituales, conectarse a la base, ejecutar la consulta, desconectar de la base. PHP no mostrrá por pantalla nada que tu no quieras qu se vea.
__________________
Blog | Tecnosquad
  #3 (permalink)  
Antiguo 22/09/2006, 13:40
Avatar de Nano_  
Fecha de Ingreso: febrero-2006
Ubicación: Bogotá, Colombia
Mensajes: 1.866
Antigüedad: 14 años
Puntos: 96
ArrauKano gracias por tu respuesta pero creo que no me di a enteder... Lo que pasa es que actualmente se me esta ejecuntando un insert al momento que se ensta cargando la pagina y este proceso se demora varios segundos ya que son varios los datos a insertar... Por lo tanto es muy tedioso estar esperando..
Por eso quisiera saber: Como puedo hacer para que una pagina se cargue normalmente y que por "debajo" de ella se valla haciendo el insert que necesito.. no se si exisxta alguna funcion de php para ello u otro metodo..
__________________
:.:Nano.:: @nano_hard - Retornando al foro
  #4 (permalink)  
Antiguo 22/09/2006, 13:57
Avatar de ArrauKano  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago
Mensajes: 664
Antigüedad: 17 años, 3 meses
Puntos: 4
Me imagino que si el tema de recargar la pag es lo que molesta, entonces habría que aplicar ajax. Como no tenemos código a mano, debo presumir otras cosas. Si son muchos los datos, probablemente parte del tiempo que se demora en subir los datos (si, los datos de un formulario se suben = que los archivos) sea alto. podrías intentar haciendo una pequeña prueba:

- hace la consulta directamente en algun cliente y mide el tiempo que se demora (mysqlquerybrowser por ejemplo)

- hace el upload (el formulario que tienes actualmente) de los datos sin la consulta, pero mide el tiempo de ejecucion del script estableciendo una variable con el timestamp al principio del script y restandole el timestamp al final.

- si usas mozilla firefox, podrias probar la extension fasterfox, que mide el tiempo entre el inicio de la conexion con el servidor y el final de la respuesta.

ahora podras determinar donde esta el cuello de botella, si es en el upload, en la consulta misma o en la salida por pantalla.
__________________
Blog | Tecnosquad
  #5 (permalink)  
Antiguo 22/09/2006, 14:11
Avatar de Nano_  
Fecha de Ingreso: febrero-2006
Ubicación: Bogotá, Colombia
Mensajes: 1.866
Antigüedad: 14 años
Puntos: 96
El problema radica basicamente en el insert
Código PHP:

if($fe1 >= $fecha_sistema) {

     
//Eliminacion de datos ya insertados en la tabla temporal
     
$eliminar_datos_forma mysql_query ("DELETE from datos_forma where ter_nit='$nit' AND tip_cer_cod='$forma'",$link);

 
//Insertamos datos a la tabla temporal (datos_forma) 
      
$insertar_datos_forma "INSERT INTO datos_forma (...............................) SELECT..................................................";
      
mysql_query($insertar_datos_forma$link); 
e aqui donde se encuentra la demora de la carga de la pagina basicamente. Lo que hace el if es una validacion que si la fecha que esta en la base de datos es mayor a la del sistema. Ingrese a la pagina.. Al momento que el esta cargando la pagina hace el insert a la tabla temporal, pero como son muchos datos por insertar se demora mucho.. y por eso necesito hacer que la pagina se cargue pero que por "debajo" se valla ejecutando el insert..
__________________
:.:Nano.:: @nano_hard - Retornando al foro

Última edición por Nano_; 22/09/2006 a las 14:24
  #6 (permalink)  
Antiguo 22/09/2006, 14:33
Avatar de maralbust  
Fecha de Ingreso: febrero-2004
Ubicación: Santiago
Mensajes: 578
Antigüedad: 16 años
Puntos: 0
y si haces algo asi como foros del web cuando te logeas? un preload o benvenido n unos instantes seras redireccionado.


saludos
__________________
..:: NADA SE PIERDE SOLO SE TRANSFORMA ::..
  #7 (permalink)  
Antiguo 22/09/2006, 14:47
Avatar de Nano_  
Fecha de Ingreso: febrero-2006
Ubicación: Bogotá, Colombia
Mensajes: 1.866
Antigüedad: 14 años
Puntos: 96
maralbust gracias por tu idea pero tampoco me sirve.. Como indique anteriormente son muchos los datos a insertar...
__________________
:.:Nano.:: @nano_hard - Retornando al foro
  #8 (permalink)  
Antiguo 22/09/2006, 16:21
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 18 años, 1 mes
Puntos: 129
Cita:
Iniciado por Nano_ Ver Mensaje
maralbust gracias por tu idea pero tampoco me sirve.. Como indique anteriormente son muchos los datos a insertar...
Nano_

Piensa por un momento como funciona PHP.

Pides tu script/página al servidor .. PHP la procesa y el resultado lo entrega al cliente cuando -termina-.

Ahí PHP maneja un concepto del "buffer" de salida .. Buffer que "entrega" cuando termina la ejecución del script. Si quieres probarlas: ob_start() ... flush() y funciones afines. Se trataría de que tu proceso fuese tipo:

Código PHP:
<html>
 tu pagina + PHP si coresponde "normal"
</html>
<?
flush
(); // o función para entregar el buffer de salida de PHP en este instante.
// proceso largo 
?>
Tienes funciones para "forzar" enviar lo que tenga el buffer de salida en cualquier momento al "cliente". De igual forma, esto no te servirá por qué el cliente todavía estará a la espera de terminar la ejecución del script para liberarse.

Yo creo que deberías ver bien por qué ese proceso es tan largo y ver forma de optimizarlo. Seguro que se puede, tal vez con más uso de SQL y menos de PHP por médio ..

Por ejemplo en el poco y nada de código que expusistes "parece" que haces un proceso de "SELECT" por un lado para luego hacer un "DELETE" en función de lo obtenido y más encima mueves datos a otra tabla!!!!!!!!! .. (no será mejor usar un "flag" de estado simplemene? para "deshabilltar" tal vez ese registro? .. Bueno . .esto es otro tema (abrelo si quieres para ver forma de optimizar lo que ya haces).

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #9 (permalink)  
Antiguo 25/09/2006, 17:22
Avatar de Nano_  
Fecha de Ingreso: febrero-2006
Ubicación: Bogotá, Colombia
Mensajes: 1.866
Antigüedad: 14 años
Puntos: 96
Saludos..
Bueno voy a explicar como es el funcionamiento que tengo actualmente en el sistema.

El usuario al momento de loguearse. El sistema verifica que su numero y clave sean los correctos de ser asi el pasa a un menu principal donde primero se realiza una comparacion que si la fecha que esta guardada en la Base de datos para ese cliente es mayor a la base de datos cargar una tabla temporal donde mas adelante la utilizare (no siempre carga la misma cantidad de registro por lo que habeses dura un mas tiempo la carga de la pagina).

Código PHP:
if($fe1 >= $fecha_sistema) {
//Comienzo eliminando los datos que hallan sido insertados con anterioridad para ese usuario para que no me creen duplicidad en la tabla temporal
     
$eliminar_datos_forma mysql_query ("DELETE from datos_forma where ter_nit='$nit' AND tip_cer_cod='$forma'",$link);

 
//Insertamos nuevo datos a la tabla temporal.. son cinco tablas que consulto y la respuesta de esas tablas son la que se realiza el insert
      
$insertar_datos_forma "INSERT INTO datos_forma (...............................) SELECT..................................................";
      
mysql_query($insertar_datos_forma$link);  
// y por ultimo se carga el menu..... 
Espero que con esto ya me halla explicado mejor y me puedan brindar una idea para poder optimizar o realizar esta consulta de una forma mas rapida... CAbe aclarar que los datos que se insertan a la tabla "temporal" no influye en el cargue del menu.. asi que por eso indicaba si habia una forma de hacerlo "por debajo"...

Bueno gracias por su atencion y hasta pronto!!
__________________
:.:Nano.:: @nano_hard - Retornando al foro
  #10 (permalink)  
Antiguo 25/09/2006, 20:14
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 18 años, 1 mes
Puntos: 129
Cita:
Iniciado por Nano_ Ver Mensaje
Saludos..
Bueno voy a explicar como es el funcionamiento que tengo actualmente en el sistema.

El usuario al momento de loguearse. El sistema verifica que su numero y clave sean los correctos de ser asi el pasa a un menu principal donde primero se realiza una comparacion que si la fecha que esta guardada en la Base de datos para ese cliente es mayor a la base de datos cargar una tabla temporal donde mas adelante la utilizare (no siempre carga la misma cantidad de registro por lo que habeses dura un mas tiempo la carga de la pagina).

Código PHP:
if($fe1 >= $fecha_sistema) {
//Comienzo eliminando los datos que hallan sido insertados con anterioridad para ese usuario para que no me creen duplicidad en la tabla temporal
     
$eliminar_datos_forma mysql_query ("DELETE from datos_forma where ter_nit='$nit' AND tip_cer_cod='$forma'",$link);

 
//Insertamos nuevo datos a la tabla temporal.. son cinco tablas que consulto y la respuesta de esas tablas son la que se realiza el insert
      
$insertar_datos_forma "INSERT INTO datos_forma (...............................) SELECT..................................................";
      
mysql_query($insertar_datos_forma$link);  
// y por ultimo se carga el menu..... 
Espero que con esto ya me halla explicado mejor y me puedan brindar una idea para poder optimizar o realizar esta consulta de una forma mas rapida... CAbe aclarar que los datos que se insertan a la tabla "temporal" no influye en el cargue del menu.. asi que por eso indicaba si habia una forma de hacerlo "por debajo"...

Bueno gracias por su atencion y hasta pronto!!
Realmente así como lo explicas, sin la estructura de las "5 tablas implicadas" .. si usas indices por ejemplo .. si las relacionas por claves foráneas .. el SQL que empleas completo .. etc. para mí, resulta complicado aventurar una respuesta en pró de una optimización de tu código.

Ya que el problema principal es de "SQL" .. te invito a pulicar tu pregunta en el foro de "Base de datos" (-> Mysql) con los siguientes ingredientes:

1) Estructura completa de tus tablas (que se vea que tipo de datos usas en la definición de campos y que relación guardan entre ellos .. ahí se verá también si manejas "indices" por ejemplo y como los creas).

2) El SQL completo que usas (tal vez con otro tipo de sentencias SQL se mejore el tema).

3) Versión de Mysql que usas (por si hay SQL más óptimo para la versión de Mysql que usas).

De momento te invito a leer tutoriales sobre Msyql y optimización:
http://www.mysql-hispano.org/page.php?id=29


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 13:09.