2012-04-10 21 views
15

Tengo un horario de correo electrónico que se ejecuta todos los días en la página php usando trabajos cron. El código php funciona bien cuando ejecuto la página usando un enlace.cómo ejecutar el archivo php usando tareas cron

Ahora cuando ejecuto el script php usando trabajos cron, también funciona bien, pero cuando pongo alguna consulta los trabajos cron no entenderán el enlace.

por ejemplo: http://www.wetube.org/cron.php?id=01001 así que ahora si intento ejecutar esto todos los días usando cron job, no funciona.

Pero si borramos la consulta, funciona bien. ¿Conocen algún código que haga que este enlace funcione en el trabajo cron?

+0

¿Qué significa "poner una consulta"? Además, ¿qué pones como comando para el cron-job? –

Respuesta

36

Cron ejecuta los comandos tal como se ejecutarían a través del shell, por lo que al ejecutar PHP se usarían rutas locales.

Es necesario utilizar un comando como:

php /home/USER/public_html/cron.php

O si se incluye la cadena de consulta es necesario, usar cURL lugar (si está instalado):

curl http://www.wetube.org/cron.php?id=01001

Usted podría Quiero ver cómo no exponer tus scripts cron a internet: moverlos a un lugar fuera de tu directorio web porque, si alguien lo encuentra, puede recargarlo constantemente para enviar spam a tus scripts cron (es decir, Ots de correos electrónicos)

+0

gracias hombre pero qué puedo agregar más para evitar el envío de informe –

+4

Si tiene que ejecutar el script a través de HTTP (que generalmente es una mala idea en primer lugar) y su servidor tiene una dirección IP estática (y dedicada) puede limitar el acceso solo desde su servidor adjuntando su script cron en una verificación condicional de que '$ _SERVER ['REMOTE_HOST']' coincide con la dirección IP de su servidor. Sin embargo, esto no es infalible y su apuesta más segura es simplemente tener el script cron fuera de su directorio web. – wyqydsyq

7

yo añadiría de hash como

curl http://www.wetube.org/cron.php?id=01001&hash=cm349ucKuc023b2ynGyv23ycr23 

y en el archivo PHP

if(isset($_GET['hash']) && $_GET['hash']=='cm349ucKuc023b2ynGyv23ycr23'){ 
.... 
stuff to do 
.... 
} 

* incluso se puede añadir control específico de tiempo/fecha en que se debe ejecutar.
* puede marcar IP
* generar shahs de sha512 (lo recomendaría) tanto en archivos cron como php con la misma sal e incluso el tiempo y luego comprobar si son los mismos: sería imposible que un hacker recree - excepto si de alguna manera obtiene su configuración hash original

Cuestiones relacionadas