una soporta segundo por paso pagina optimizar lentas formulario ejemplos descendente datos cuantas crear consultas conectar con como mysql http-get sql-function

soporta - ¿Puedo ejecutar un HTTP GET directamente en SQL bajo MySQL?



pagina web con base de datos mysql (4)

Me encantaría hacer esto:

UPDATE table SET blobCol = HTTPGET(urlCol) WHERE whatever LIMIT n;

¿Hay código disponible para hacer esto? Sabía que esto debería ser posible ya que los documentos MySQL incluyen un ejemplo de agregar una función que hace una búsqueda de DNS.

MySQL / windows / Preferiblemente sin tener que compilar cosas, pero puedo.

(Si no has oído hablar de algo como esto, pero esperarías que lo hubieras hecho si existiera, un "proly no" sería agradable).

EDITAR: Sabía que esto abriría toda una seguridad de can-o-worms, sin embargo, en mi caso, el único acceso al DB es a través de la aplicación de consola mysql. No es un sistema accesible a nivel mundial. No es un back-end web. Es solo un sistema de registro de datos local



No, gracias a Dios, sería un horror de seguridad. Cada agujero de inyección de SQL en una aplicación podría aprovecharse para iniciar conexiones de correo no deseado para atacar a otros sitios.

Podría, supongo, escribirlo en C y compilarlo como un UDF. Pero no creo que realmente te sirva de nada en comparación a simplemente SELECCIONAR en tu capa de aplicación y recorrer los resultados haciendo HTTP GET y UPDATEing. Si estamos hablando de hacer conexiones HTTP, la eficiencia adicional de hacerlo en la capa de la base de datos quedará empequeñecida por las demoras de la red.


Proly no. Las mejores prácticas en un entorno web es tener servidores de bases de datos aislados desde el exterior, en ambos sentidos, lo que significa que el servidor db no podría obtener elementos de Internet.


Proly no.

Si está absolutamente decidido a obtener contenido web desde un entorno de SQL, hay dos posibilidades:

  1. Escriba una UDF de MySQL personalizada en C (como se menciona bobince). El potencial podría ser un gran trabajo, dependiendo de su experiencia con C, de cuánta seguridad desea, de cuán completa quiere que sea el UDF: por ej. ¿Solo recibir solicitudes? ¿Qué hay de POST? ¿CABEZA? etc.

  2. Use una base de datos diferente que pueda hacer esto. Si está contento con SQL, probablemente pueda hacer esto con PostgreSQL y uno de los idiomas del complemento, como Python o PHP.

Si no te preocupas demasiado por seguir con SQL, podrías usar algo como eXist . Puede hacer este tipo de cosas de forma relativamente fácil con XQuery, y se beneficiaría de poder modificar fácilmente los resultados para adaptarlos a su esquema (en lugar de agruparlo en un campo blob) o almacenar la página "tal cual" como un documento xhtml en el DB.

Luego puede ejecutar consultas muy rápidamente en todos los documentos para, por ejemplo, obtener todos los enlaces o citas, o lo que sea. Incluso podría aplicar XSL a tal resultado con muy poco trabajo adicional. Ideal si está almacenando las páginas como referencia y desea adaptar los resultados a una aplicación personal de tipo "intranet".

Además, dado que eXist está centrado en documentos, tiene muchos métodos geniales para la búsqueda de texto difuso, la búsqueda de palabras aproximadas y un gran índice de texto completo (mucho mejor que el de MySQL). Perfecto si buscas algo de minería de datos en el contenido, por ejemplo: encuéntrame todos los documentos donde una palabra como " hamburguesa " dentro de las 50 palabras de "hotdog" donde la palabra no está en una lista UL. ¡Prueba hacerlo nativo en MySQL!

Como un aparte, y sin intención de malicia; A menudo me pregunto por qué eXist se pasa por alto cuando las personas crean CMS. Es una base de datos que puede almacenar contenido en su formato nativo (XML, o su subconjunto (x) HTML), consultarlo fácilmente en su formato nativo , y puede traducirlo de su formato nativo con un poderoso lenguaje de plantillas que se ve y actúa como su formato nativo . A veces SQL es simplemente incorrecto para el trabajo!

Lo siento. ¡No quise waffle! ps