2011-07-28 39 views
12

Probablemente encontraría una manera de hacerlo si tuviera acceso completo al servidor, sin embargo, el problema es que es solo un servicio de alojamiento que me deja con nada más que Acceso FTP.¿La mejor manera de ejecutar periódicamente un script PHP?

me gustaría ejecutar un script PHP periódicamente para comprobar si hay contenido obsoleto/roto, el contenido nuevo agregado, eliminar archivos no estén en uso, etc, sin embargo, el script puede tomar hasta 60 segundos para ejecutar (debido a la agregación de contenido) y me siento como un asno solo para ejecutarlo mientras proceso una solicitud del primer usuario que visita el sitio web una hora después de haber sido actualizado: P

Dejar mi PC en casa 24/7 para programar las solicitudes no es una opción.

+3

Google para 'webcron', una gran cantidad de servicios que ofrece este. – Wrikken

+2

Si ejecuta el script a través de HTTP, tenga en cuenta los tiempos de espera de ejecución. Si bien puede usar 'set_time_limit()' para permitir que PHP ejecute el script más tiempo de lo normal, algunos servidores web (Apache) tienen sus propios límites de tiempo de proceso establecidos que no puede cambiar. Pregúntele a su anfitrión si le permitirán configurar un script cron – Phil

+1

En teoría, podría evitar el límite de tiempo difícil de algunos webhosts confiando en dos visitas. Básicamente, utiliza mi enfoque, luego redirige al usuario * * segunda * vez, ejecutando la segunda parte de tu larga secuencia de comandos. Dividir el tiempo de ejecución a la mitad y redirigir al usuario dos veces. Sí, pobre usuario. Jaja. –

Respuesta

14

Puede usar un servicio cron en línea para simular que tiene acceso cron.

Crear archivo PHP con contenidos que le gustaría ejecutado

Free Cron Online Website

Configurar el cron en línea gratis para ejecutar ese archivo cada x minutos.

+1

Guau, es un sitio increíble. ¡Esto definitivamente me ayudará a comenzar! – CookieMonster

+1

Sí, excelente sitio, marcado como favorito. Gracias por contarnos al respecto :) –

0

¿Por qué no usar

crontab 

Echa un vistazo aquí:

http://en.wikipedia.org/wiki/Cron 
+2

El OP dijo específicamente que no hay otro acceso en el servidor excepto FTP. –

+1

Además, es 'crontab'. –

+0

Y si un hosting proporciona solo acceso FTP. ¿Permitirán que un script se ejecute durante más de 60 segundos? – glarkou

4

No estoy seguro si este es el enfoque correcto, pero me acaba de utilizar para desencadenar una secuencia de comandos cuando el primer el usuario visita el sitio y luego envía un <meta http-equiv="refresh"... al usuario para que su navegador actualice la página. La secuencia de comandos PHP original todavía se ejecutará en el servidor, pero el usuario ya no podrá verla.

Básicamente, algo así como:

if(check if the user is the first visitor today) { 
    set_time_limit(0); 
    echo "<meta http-equiv='refresh' content='1;url=..." />"; // put your site baseurl in here 

    ... run your scripts here 
} 

Es sólo una idea. Podría no funcionar. Solo pruébalo.

+0

Oye, eso suena como una buena idea. Supongo que redirige al usuario usando el encabezado ("Ubicación: .."); funcionaría también (¿continuaría el script a pesar de que el usuario lo redireccionó)? Voy a probar este método lo antes posible. – CookieMonster

+1

Sí, usar un encabezado estaría bien también. En realidad, envíe primero el encabezado y luego la metaetiqueta (después de eso o obtendrá un error), para asegurarse de que el usuario sea redirigido. Algunos navegadores pueden ignorar el encabezado (Ubicación) por algún motivo, por lo que la metaetiqueta garantizará la redirección. Solo un hábito mío. ¡Espero que esto funcione para usted! :) –

+0

Ok, ¡genial! Probaré ambos métodos y veré cuál funciona mejor para mí :) Gracias – CookieMonster

0

Si su proveedor de hosting no le proporciona nada más que acceso FTP, y no desea programar una solicitud periódica desde otra máquina, entonces no hay nada que pueda hacer. Tendrás que obtener una mejor cuenta de alojamiento, preferiblemente una que te permita usar cron.

+1

Confíe en un cliente/visitante para hacer eso, luego desplace al cliente. Vea mi método arriba. :) –

Cuestiones relacionadas