2009-07-31 29 views
6

Estoy usando Ubuntu en el servidor y estoy usando Putty para acceder. Quiero crear cronjobs para mi sitio php. ¿Cómo puedo hacer esto?Trabajo de Cron en Ubuntu para php

+0

Pertenece en serverfault. – hobodave

+0

Además, no haga su pregunta más de una vez, si se da cuenta de que no se está explicando correctamente, haga clic en el enlace de edición de su pregunta y agregue más información. – dimo414

Respuesta

15

Si quiere decir que usted quiere que su sitio PHP para hacer algunas tareas regulares, hay dos maneras posibles.

1) Utiliza cron para acceder a determinada página con regularidad. Puede hacer esto con un navegador basado en texto, p. lince. Usted tira de la secuencia de comandos de esta manera:

* * * * * /usr/bin/lynx http://yourhost.com/cron.php -dump > /dev/null

(Esto requerirá que cada minuto esa manera usted puede construir su propio horario dentro de su aplicación.)

2) Usted llama a su guión con la línea de comandos php intérprete:

* * * * * /usr/bin/php /path/to/cron.php > /dev/null

Generalmente solución de dos es mejor. Sin embargo, necesitarás acceso a la caja. El cron en solución uno se puede activar desde un host diferente, si no puede instalar crons en el host.

También tenga cuidado con un error común usando la versión de línea de comando de php. En Debian (y potencialmente en otros sistemas) puede haber archivos php.ini separados para cgi, cli y mod_php. Si ha personalizado su configuración, asegúrese de que la línea de comando php esté utilizando la correcta. Puede probar esto con:

/usr/bin/php -i | less

En respuesta al comentario de Dimo ​​hice algunos puntos de referencia. Llamé a un simple script php local (que acaba de ecos "test") 1000 veces con el lince, el wget y php-cli:

kbsilver:temp kbeyer$ time . wget.sh 

real 0m14.223s 
user 0m2.906s 
sys 0m6.335s 

(Command: wget -O /dev/null "localhost/test.php"; 2> /dev/null) 

kbsilver:temp kbeyer$ time . lynx.sh 

real 0m26.511s 
user 0m5.789s 
sys 0m9.467s 

(Command: lynx -dump "localhost/test.php"; > /dev/null) 




kbsilver:temp kbeyer$ time . php_cli.sh 

real 0m54.617s 
user 0m28.704s 
sys 0m18.403s 

(Command: /opt/local/bin/php /www/htdocs/test.php > /dev/null) 

servidor es lighttpd, php(fastcgi) con apc (en Mac OS X).

Resulta que de hecho wget es la mejor herramienta para el trabajo con respecto a la velocidad.

Por lo tanto, el resultado de php-cli no es sorprendente, ya que los otros métodos reutilizan un hilo de php ya en ejecución con el caché de código de operación.

Por lo tanto, la única ventaja real del uso de php-cli es la seguridad, ya que el script no estará disponible desde el exterior, ya que puede colocarlo fuera del docroot.

(Esta prueba es, obviamente, no es 100% exacta, pero las diferencias son bastante obvio en mi opinión)

+1

Imagino que wget es una herramienta mejor para esto que lynx -dump – dimo414

1

Supongo que desea hacer una copia de seguridad de su sitio PHP? Editar el crontab usando:

crontab -e 

Esto iniciará una instancia de VI en la que se puede editar el crontab, pulse i para el modo de inserción. A continuación, deberá poner en la información para cuando la entrada cron se ejecutará y el comando a ejecutar en ese momento, por ejemplo:

30 10 * * * tar -zcvf ./myphpsite.tar.gz /var/www/phpsite 

Así que el comando anterior tar gzip su phpsite en/var/www/phpsite en 10:30 p.m. todos los días. Salir y salir de vi con : WQ

ver este para mayor referencia:

http://www.adminschoice.com/docs/crontab.htm

Cuestiones relacionadas