Soporte » Guías – Resolución de problemas » Actualizar una base de datos con cron

  • davidalba7

    (@davidalba7)


    Hola, muy buenas a todos.

    Tengo una página en wordpress con el hosting SiteGround y queremos actualizar la base de datos con un csv y que sea semanalmente, simplemente subir un fichero csv y el script se ejecutara con cron.

    Nosotros tenemos la base de datos de la página pero utilizamos phpMyAdmin y necesitamos conectarnos al servidor de la base de datos. Debemos preguntar al hosting para que nos ofrezcan la base de datos y así que el script contacte con la base de datos o si el script esta en el hosting puede acceder como localhost?

    Muchas gracias de antemano.

Viendo 5 respuestas - 1 de 5 (de 5 total)
  • kallookoo

    (@kallookoo)

    Hola @davidalba7

    Veamos lo primero es saber de donde sacas el csv, ya que puede variar la implementacion.
    No es lo mismo leer un archivo csv que por ejemplo generarlo externamente.

    Despues tienes dos opciones o creas el cron via server o usando el WordPress, cada uno necesita diferente codigo y configuracion.

    davidalba7

    (@davidalba7)

    Hola @kallookoo la idea es un csv generado externamente y con el script acceder a la base de datos e introducir los productos de forma automáticamente con el cron.

    El script en si sera un fichero php que ejecutara el cron, la pregunta es, si subimos el script al servidor mediante un ftp, la conexión del fichero php sería localhost o deberíamos poner la dirección del servidor SQL?

    Saludos.

    kallookoo

    (@kallookoo)

    Hola @davidalba7

    Si usas el cron del servidor y el mysql esta en el mismo, usa localhost ya que si pones la ip externa o url y no esta configurado para permitir conexiones externas no funcionaria.
    Yo por seguridad y facilidad usaria el comando wp en el cron del servidor, pero tu servidor lo tiene que tener instalado.
    Aqui te pongo un link con mas info; https://developer.wordpress.org/cli/commands/db/ Como veras solo necesitas https://developer.wordpress.org/cli/commands/db/import/ y no es necesario especificar los datos de conexion ya que usa los mismo del archivo wp-config.php

    Hola @kallookoo ,

    Llevamos días realizando pruebas en un servidor local de mySQL y el script en php funciona correctamente, pero a la hora de hacer un cron job , no se inicia, y sabemos que es así porque tenemos un log en caso de que el insert a la base de datos de algún error. He seguido esta guía para realizar el cron de una forma correcta -> https://www.siteground.es/tutoriales/wordpress/reemplazar-wpcronjob/

    Cualquier ayuda o consejo nos vendría muy bien, gracias de antemano a todo el mundo por la ayuda.

    Hola @davidalba7,

    Te comento los cronjobs del WordPress se ejecutan cuando alguien visita la web y los del servidor siempre que el tiempo definido coincida.
    Por ejemplo esto 0 0 * * 0 se ejecuta cada domingo de cada semana a las 00:00.

    Como parece que quieres usar el cron servidor, te sugiero que hagas un log general para tener mas control, ya que comentas:

    …no se inicia, y sabemos que es así porque tenemos un log en caso de que el insert a la base de datos de algún error…

    Como veras, no puedes saberlo siempre ya que si no hubiese error no tendrias nada en el log.
    Yo dentro del script crearia un logger (simple) e ir guardando en un lugar de facil acceso lo sucedido ya sea error o no, y si hubiese un error mandaria un mail para avisarme y en el crontab suprimiria los errores asi &>/dev/null o >/dev/null 2>&1.
    Te pongo un ejemplo de como definir un cron (crontab):

    
    0 0 * * 0 /ruta/php /ruta/nombre-del-script.php &>/dev/null
    

    Donde pone ruta seria la ruta absoluta, por ejemplo para php podria ser /usr/bin/php dependiendo de donde este o si usas el cron (configuracion) del panel de control especificarlo correctamente.

    Como no se como tienes el script, etc… tambien te comento que por seguridad sincronices el backup de la base de datos automatico con el cron, asi si falla y se corrompe, etc… la DB, podras restaurarla con la ultima version ya sea usando el mismo script o manualmente.

    Tambien te comento que ese link que pones se para desactivar el cron del WordPress y ejecutar manualmente los eventos que esten definidos usando el cron del servidor, es una tactica que se suele usar pero no ejecuta ningun script ya que lo que hace es comprobar los eventos que tiene definidos y si fuese necesario ejecutaria la function definida por wp_schedule_event o wp_schedule_single_event.

    Ahora mismo ya no se me ocurre nada mas que comentarte, pero por lo que comentas revisa la configuracion del cron, como no se si usas docker, vagrant, xampp, etc.. no te puedo orientar.

Viendo 5 respuestas - 1 de 5 (de 5 total)
  • Debes estar registrado para responder a este tema.