[Php-avanzado] tareas con crontab desde php

Leonardo Tadei - Pegasus Tech Supply leonardot en pegasusnet.com.ar
Mar Ago 5 23:26:36 ART 2014


Hola Omar,

	no se puede hacer esto.
	Las tareas de Cron se crean únicamente de forma interactiva con el
comando crontab -e
	Esto es para evitar que por ejemplo la ejecución de código malicioso
cree una tarea que dispare procesos en el sistema... por seguridad,
vamos. Es similar al tratamiento de la configuración de sudo con visudo.
	Tené además mucho cuidado con crear tareas desde la web: salvo que sean
un grupo de tareas escritas por vos y preseleccionadas, es abrir la
puerta al desastre.

	Solución a tu problema: creás una tarea que llama a un script tuyo, por
ejemplo crontab.php, que escribís en PHP-CLI.
	Hacés que tu formulario cree un archivo o tabla o lo que sea para
almacenar las tareas del usuario. Podés elegir qué datos guardar y como
para que sea fácil de leer y procesar.
	Por último, hacés que crontab.php lea (y valide) las tareas de los
usuarios y las ejecute.
	Dependiendo de la precisión que requieran tus tareas, ponés la
frecuencia de la llamada a crontab.php... a lo sumo lo llamás cada 1
minuto y la mayoría de las veces no tiene que ejecutar nada y sale.

	Saludos!
	

El mar, 05-08-2014 a las 16:35 -0300, Omar García Giorgini escribió:
> Hola gente de la lista:
> 
> 
> 
>   Saludos a todos. Vengo a utilizar la lista luego de bastante tiempo
> para ver si a alguno le interesa hallar conmigo la solucion de lo
> siquiente:
>  Tengo un script de php que tras recibir y acomodar los datos desde un
> formulario debe insertar una tarea  en el cron del usuario apache ,
> www-data.
> 
> Acá la parte del código pertinente
> 
> exec('crontab -l > /home/omar/publico/crontab.txt') ;
> file_put_contents('/home/omar/publico/crontab.txt','zzzzzzzzzzzzzz/n',FILE_APPEND);
> echo exec('crontab /home/omar/publico/crontab.txt') ;
> $output = exec('crontab -l');
> echo $output;
> 
> 
> en donde dice zzzzzz va originalemnte  $string_tarea , ahora sacado a
> fines depurativos.
> Luego de ejecutarlo y viendo por consola sale :
> 
>  root en omar-Lenovo-G470:/home/omar#
> cat /var/spool/cron/crontabs/www-data 
> # DO NOT EDIT THIS FILE - edit the master and reinstall.
> # (/home/omar/publico/crontab.txt installed on Mon Aug  4 23:52:55
> 2014)
> # (Cron version -- $Id: crontab.c,v 2.13 1994/01/17 03:20:37 vixie Exp
> $)
> 0 * * * * php /home/chsitesc/delete1.php
> root en omar-Lenovo-G470:/home/omar# cat  /home/omar/publico/crontab.txt 
> 0 * * * * php /home/chsitesc/delete1.php
> zzzzzzzzzzzzzz/nroot en omar-Lenovo-G470:/home/omar# 
> 
> 
> Lee la lista de tareas , lo pasa al archivo y agrega a ese archivo la
> linea , pero luego no lo toma como nuevo crontab. Que puede ser ?
> gracias a todos por su tiempo .
> 
> 
> Saludos a Leo 
> 
> _______________________________________________
> Lista de correo: Php-avanzado
> Mensajes a la lista: Php-avanzado en pato2.fi.mdp.edu.ar
> Administración Web: http://www3.fi.mdp.edu.ar/cgi-bin/mailman/listinfo/php-avanzado
> Desubscripción: php-avanzado-request en pato2.fi.mdp.edu.ar?subject=unsubscribe

-- 
Leonardo Tadei
leonardot en pegasusnet.com.ar
Web: http://leonardo.tadei.com.ar
Firma pública: http://www.pegasusnet.com.ar/LeonardoTadei-public.key



Más información sobre la lista de distribución Php-avanzado