Foro de elhacker.net

Programación => Bases de Datos => Mensaje iniciado por: Skeletron en 16 Enero 2011, 00:47 am



Título: Insert Retrazado en MySQL
Publicado por: Skeletron en 16 Enero 2011, 00:47 am
Hola gente.
Se puede hacer algo así?:

Insertar dentro de 100 segundos X X X..
Hacer un INSERT que se realice dentro de X cantidad de segundos.
Se puede?


Título: Re: Insert Retrazado en MySQL
Publicado por: Spider-Net en 16 Enero 2011, 02:03 am
Se podría hacer con AJAX. Con la función SetTimeOut() retrasas los 100 segundos o lo que quieras y luego llamas a la función AJAX que a su vez llamará al archivo PHP que ejecutará el INSERT.


Título: Re: Insert Retrazado en MySQL
Publicado por: Skeletron en 16 Enero 2011, 17:06 pm
Yo no quiero ser un HDP, pero: Porque la gente no responde lo que se le pregunta en este foro?
Si no tenes respuesta, no respondas, y listo.

Y si el usuario cierra la web?
Y si la insercion la tengo que hacer dentro de 5 dias?
Lo de Ajax descartalo.

Hay algun metodo PROPIO DE SQL que haya Inserciones de ese tipo?


Título: Re: Insert Retrazado en MySQL
Publicado por: Spider-Net en 17 Enero 2011, 00:05 am
Perdona que te diga compañero, pero tu pregunta es si se puede hacer un INSERT con un retraso de x segundos y mi respuesta es: SÍ, con AJAX (respuesta totalmente válida)

Que no sea lo que tú quieres no es mi problema, pero mi respuesta responde a tu pregunta así que no quiero ser HDP pero baja los humos compi ;). Si quieres que te den respuestas para algo más concreto haz preguntas más concretas, tú NO has dicho en tu primer post que quieras hacer la consulta dentro de 5 días ni que la harías cuando el usuario cerrase la web. Has dicho que si se podía hacer con un retraso de x segundos y eso es posible con AJAX.

NO hay métodos SQL que ejecuten ninguna acción  con retraso a no ser que tengas un servidor dedicado con crontab o uses ORACLE para ejecutar sentencias programadas, cosa que dudo porque por tu respuesta es obvia que eres un niñato ;)

Si quieres respuestas adecuadas haz preguntas adecuadas.

PD: Revisa tu ortografía, se escribe "retraSado" no "retraZado".

tMGNjMscw44


Título: Re: Insert Retrazado en MySQL
Publicado por: #!drvy en 17 Enero 2011, 03:15 am
Hola,

Ey No hace falta declararse la guerra por un mal entendido xD.

Por otra parte creo que en mysql no es posible (mientras que en sql si con la funcion waitfor xD).
Tu alternativa es usar Cron si tu servidor lo permite.




Saludos


Título: Re: Insert Retrazado en MySQL
Publicado por: Skeletron en 17 Enero 2011, 22:24 pm
Hola,

Ey No hace falta declararse la guerra por un mal entendido xD.

Por otra parte creo que en mysql no es posible (mientras que en sql si con la funcion waitfor xD).
Tu alternativa es usar Cron si tu servidor lo permite.




Saludos
Muchas gracias por el dato.

SPIDER:
Yo dije: INSERT CON RETRAZO.
No dije: RETRAZO DE INSERT

no comprares un Do While, con un While.
Noto tu inferioridad a la hora de sacarme mis errores, intentando tapar los tuyos


Título: Re: Insert Retrazado en MySQL
Publicado por: Spider-Net en 17 Enero 2011, 23:30 pm
Te vuelvo a decir que se dice "retraSo" y no "retraZo". Practica un poco de ortografía antes de intentar corregirme en algo.

Y segundo es lo mismo un INSERT con retraso que retrasar un INSERT. Revisa un poco también la gramática porque es obvio que la tienes pendiente ;)

Retrasar un INSERT y ejecutar un INSERT con retraso de x segundos es lo mismo (esto no es comparable a un while o un do while) y mi respuesta sigue siendo completamente válida. Así que una vez más te voy a recomendar que practiques gramática y ortografía, además te diré que aprendas a realizar tus preguntas y así obtendrás respuestas más concretas y finalmente permíteme reirme un poco con esta frase "Noto tu inferioridad a la hora de sacarme mis errores, intentando tapar los tuyos" XDDDDDDD. ¿Mi inferioridad?, perdona yo no soy el que más sabe de este foro ni mucho menos pero de verdad te crees superior? mira chaval, por tu foto y tus respuestas es obvio que eres un niñato y si además ni siquiera sabes que se puede programar una acción con CRONTAB y que MySQL no permite eso es obvio que te queda mucho por aprender, así que vete a estudiar y dentro de 8 ó 9 años hablamos (si es que has aprendido a escribir para entonces).


Título: Re: Insert Retrazado en MySQL
Publicado por: Skeletron en 18 Enero 2011, 03:17 am
Retrasar un INSERT y ejecutar un INSERT con retraso de x segundos es lo mismo

Claro, pero ninguna de las 2 opciones he pedido yo. Yo pedí: Insert retraZado

Seguis equivocado, y lo vas a estar toda tu vida. en todas tus acciones. :)


Título: Re: Insert Retrazado en MySQL
Publicado por: el-brujo en 18 Enero 2011, 12:15 pm
Skeletron no seas tan exagerado, Spider-Net no te contestó "exactamente" a la pregunta, pero al menos te propuso una alternativa o una idea. Si esa alternativa no era la que estabas buscando, respondes educadamente que gracias por la idea, pero no es lo que buscas.

Hay muchas maneras de decir las cosas, entiendo que la solución de Spider-Net no era la que te interesaba, pero tu respuesta está fuera de lugar.

Si siguen con la discusión se eliminarán sus futuras respuestas. Gracias.


Título: Re: Insert Retrazado en MySQL
Publicado por: madpitbull_99 en 18 Enero 2011, 13:34 pm
Citar
Insertar dentro de 100 segundos X X X..
Hacer un INSERT que se realice dentro de X cantidad de segundos.

Con PHP se podría hacer usando un Timer con microtime() y comprobando el tiempo que ha pasado.

Aquí tienes un ejemplo de como usar microtime() de la pagina oficial de php.net:
Código
  1. <?php
  2. /**
  3. * Función sencilla para repetir el comportamiento de PHP 5
  4. */
  5. function microtime_float()
  6. {
  7. list($usec, $sec) = explode(" ", microtime());
  8. return ((float)$usec + (float)$sec);
  9. }
  10.  
  11. $time_start = microtime_float();
  12.  
  13. // Dormir por un momento
  14. usleep(100);
  15.  
  16. $time_end = microtime_float();
  17. $time = $time_end - $time_start;
  18.  
  19. echo "No se hizo nada en $time segundos\n";
  20. ?>

MySQL tiene una función llamada INSERT DELAYED:
Citar
The DELAYED option for the INSERT statement is a MySQL extension to standard SQL that is very useful if you have clients that cannot or need not wait for the INSERT to complete. This is a common situation when you use MySQL for logging and you also periodically run SELECT and UPDATE statements that take a long time to complete.
When a client uses INSERT DELAYED, it gets an okay from the server at once, and the row is queued to be inserted when the table is not in use by any other thread.
Another major benefit of using INSERT DELAYED is that inserts from many clients are bundled together and written in one block. This is much faster than performing many separate inserts.
Note that INSERT DELAYED is slower than a normal INSERT if the table is not otherwise in use. There is also the additional overhead for the server to handle a separate thread for each table for which there are delayed rows. This means that you should use INSERT DELAYED only when you are really sure that you need it.

Documentacion Oficial MySQL (http://dev.mysql.com/doc/refman/5.5/en/insert-delayed.html)

Fíjate si te sirve para lo que tu quieres.

PD: Se escribe retrasado, retrazado, viene del verbo trazar.


Título: Re: Insert Retrazado en MySQL
Publicado por: Skeletron en 18 Enero 2011, 19:24 pm
Con PHP se podría hacer usando un Timer con microtime() y comprobando el tiempo que ha pasado.

Aquí tienes un ejemplo de como usar microtime() de la pagina oficial de php.net:
Código
  1. <?php
  2. /**
  3. * Función sencilla para repetir el comportamiento de PHP 5
  4. */
  5. function microtime_float()
  6. {
  7. list($usec, $sec) = explode(" ", microtime());
  8. return ((float)$usec + (float)$sec);
  9. }
  10.  
  11. $time_start = microtime_float();
  12.  
  13. // Dormir por un momento
  14. usleep(100);
  15.  
  16. $time_end = microtime_float();
  17. $time = $time_end - $time_start;
  18.  
  19. echo "No se hizo nada en $time segundos\n";
  20. ?>

MySQL tiene una función llamada INSERT DELAYED:
Fíjate si te sirve para lo que tu quieres.

PD: Se escribe retrasado, retrazado, viene del verbo trazar.


Es una opcion bastante interesante.
Queda del lado del servidor, por lo que el usuario no tiene mas control.
El insert delayed es para "esperar que la tabla quede libre" nada mas. es para dar prioridades de acceso.. algo así.

Y que tanto recurso consumirá tener varios scripts php dormidos? supongamos que tengo que esperar 15 minutos.

Ahora que recuerdo bien. mi servidor no me deja tener mas de 60 segundos un script en ejecucion. y con uno no puedo llamar a otro, porque se sigue considerando la misma ejecucion (obviamente).

pero bueno, me parece que es para tener en cuenta cuando necesito retrasos de menos de 1 minuto.

Gracias por la respuesta


Título: Re: Insert Retrazado en MySQL
Publicado por: Skeletron en 18 Enero 2011, 19:30 pm
Aclaro que ese Script PHP que enviaste, no es lo que buscamos en realidad. creo que ese mide la cantidad de tiempo que un script estuvo ejecutandose.

Pero podría hacer un SLEEP(1000), y luego un Insert. y de esa forma se inserta con 1 segundo de retraso desde que el Script llego a Sleep