Deprecated: Assigning the return value of new by reference is deprecated in /home/controlz/public_html/blog/wp-settings.php on line 472

Deprecated: Assigning the return value of new by reference is deprecated in /home/controlz/public_html/blog/wp-settings.php on line 487

Deprecated: Assigning the return value of new by reference is deprecated in /home/controlz/public_html/blog/wp-settings.php on line 494

Deprecated: Assigning the return value of new by reference is deprecated in /home/controlz/public_html/blog/wp-settings.php on line 530

Strict Standards: Declaration of Walker_Page::start_lvl() should be compatible with Walker::start_lvl(&$output) in /home/controlz/public_html/blog/wp-includes/classes.php on line 594

Strict Standards: Declaration of Walker_Page::end_lvl() should be compatible with Walker::end_lvl(&$output) in /home/controlz/public_html/blog/wp-includes/classes.php on line 594

Strict Standards: Declaration of Walker_Page::start_el() should be compatible with Walker::start_el(&$output) in /home/controlz/public_html/blog/wp-includes/classes.php on line 594

Strict Standards: Declaration of Walker_Page::end_el() should be compatible with Walker::end_el(&$output) in /home/controlz/public_html/blog/wp-includes/classes.php on line 594

Strict Standards: Declaration of Walker_PageDropdown::start_el() should be compatible with Walker::start_el(&$output) in /home/controlz/public_html/blog/wp-includes/classes.php on line 611

Strict Standards: Declaration of Walker_Category::start_lvl() should be compatible with Walker::start_lvl(&$output) in /home/controlz/public_html/blog/wp-includes/classes.php on line 705

Strict Standards: Declaration of Walker_Category::end_lvl() should be compatible with Walker::end_lvl(&$output) in /home/controlz/public_html/blog/wp-includes/classes.php on line 705

Strict Standards: Declaration of Walker_Category::start_el() should be compatible with Walker::start_el(&$output) in /home/controlz/public_html/blog/wp-includes/classes.php on line 705

Strict Standards: Declaration of Walker_Category::end_el() should be compatible with Walker::end_el(&$output) in /home/controlz/public_html/blog/wp-includes/classes.php on line 705

Strict Standards: Declaration of Walker_CategoryDropdown::start_el() should be compatible with Walker::start_el(&$output) in /home/controlz/public_html/blog/wp-includes/classes.php on line 728

Strict Standards: Redefining already defined constructor for class wpdb in /home/controlz/public_html/blog/wp-includes/wp-db.php on line 306

Deprecated: Assigning the return value of new by reference is deprecated in /home/controlz/public_html/blog/wp-includes/cache.php on line 103

Strict Standards: Redefining already defined constructor for class WP_Object_Cache in /home/controlz/public_html/blog/wp-includes/cache.php on line 425

Deprecated: Assigning the return value of new by reference is deprecated in /home/controlz/public_html/blog/wp-includes/query.php on line 21

Deprecated: Assigning the return value of new by reference is deprecated in /home/controlz/public_html/blog/wp-includes/theme.php on line 623

Strict Standards: Redefining already defined constructor for class WP_Dependencies in /home/controlz/public_html/blog/wp-includes/class.wp-dependencies.php on line 15

Warning: session_start(): Cannot send session cookie - headers already sent by (output started at /home/controlz/public_html/blog/wp-settings.php:472) in /home/controlz/public_html/blog/wp-content/plugins/si-captcha-for-wordpress/si-captcha.php on line 31

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /home/controlz/public_html/blog/wp-settings.php:472) in /home/controlz/public_html/blog/wp-content/plugins/si-captcha-for-wordpress/si-captcha.php on line 31

Strict Standards: call_user_func_array() expects parameter 1 to be a valid callback, non-static method GoogleSitemapGeneratorLoader::Enable() should not be called statically in /home/controlz/public_html/blog/wp-includes/plugin.php on line 311
Ejecutar Fichero Php Periodicamente | formatic.cat

Entradas con la etiqueta ‘ejecutar fichero php periodicamente’

Ejecutar diariamente un fichero PHP mediante crontab + wget

Lunes, 4 de Agosto de 2008

El problema de hoy es ejecutar un script php cada día a una hora determinada. Necesitamos ejecutar una consulta sql que elimine los pedidos no validados  diariamente. Explicaremos como realizar esto desde un hosting externo.

En en el caso concreo en el que estamos, queremos ejecutar cada día un fichero php alojado en nuestro servidor. Concretamente nuestro hosting posee el gestor Cpanel, desde el cual se nos ofrece una herramienta web para programar tareas. Dentro de las herramientas avanzadas disponemos del “Programador de tareas” desde el que tenemos dos modos el avanzado y el estandard.

Lo mas importante es conocer el comando que vamos a untilizar para lanzar la petición al fichero php deseado. Para usaremos wget ‘http://url-del-fichero.php’ > /dev/null ;

De este modo se lanza una peticion a la url que deseemos, es importante poner entre comillas simples la url. La parte final indica que la salida del comando wget no la necesitamos y la redireccionamos unfichero vacio. si nos interesara guardar la salida, se podria redireccionar a un fichero.

Ademas podemos hacer que cpanel envie un mail con la salida del fichero por email poniendo una dirección de email en la caja destianda a ello en la pantalla. De todos modos, en nuesto caso es aconsejable que este tipo de ficheros no tengan ninguna salida. Puesto que solo queremos actualizar la base de datos.

Modo Avanzado:

todo aquel que sea mas experto en unix, se sentirá mas comodo desde esta pantalla donde puede usar una sintaxis mas parecida a la del comando Cron de unix. Los  ‘*’  indican que se repita siempre. En el ejemplo de la figura se repetiria todos los dias, de todos los meses de todos los años a las 00:00 h. Lo que quiere decir que cada día a las 00:00 se ejecutará el comando que deseemos.

crontab avanzado de Cpanel

crontab avanzado de Cpanel

Modo Estandard:

Para los usuarios menos avanzados se puede elegir en modo estandard, donde podremos seleccionar de la lista las opciones de repeticion del intervalo. En el ejemplo se selecciona el minuto 0, la hora 3 y todos los demas se dejan pordefecto. Es curioso pero hay que dejar en día de la semana cada fin de semana, aunque la traducción no es la mas correcta, simplemente indica que tambien se repite los fines de semana, ademas de los dias de entre semana.

crontad estándard en Cpane

crontad estándard en Cpanel

Si tuvieramos acceso al servidor y este tuviera sistema operativo linux, podríamos usar los comandos propios de la consola de linux, para programar tareas como son:

  • comando cron -> sirve para ejecutar comandos de unix en intervalos regulares de tiempo períodicos. Así se podrán ejecutar comandos con la frecuencia que queramos, desde cada minuto, hasta solo unos dias concretos del año, solo los domingos, etc..
  • comando at: sirve para programar la ejecución de comandos unix en una fecha concreta, futura y puntual. Una vez estemos haciendo pruebas es importate conocer como listar las tareas que estan planificadas, mediante el comando atq, donde saldrá una lista numerada con las tareas programadas. Para eliminar cualquiera de ellas solo hay que usar el comando atrm junto el número de tarea que aparecía en el listado del comando atq.