¿Es posible usar PHP para crear, editar y eliminar trabajos crontab?
Sé cómo enumerar los trabajos crontab actuales del usuario de Apache:
$output = shell_exec('crontab -l');
echo $output;
Pero, ¿cómo agregar un trabajo cron con PHP? 'crontab -e' simplemente abriría un editor de texto y tendrá que editar manualmente las entradas antes de guardar el archivo.
¿Y cómo eliminar un trabajo cron con PHP? Nuevamente, debe hacer esto manualmente con 'crontab -e'.
Con una cadena de trabajo como esta:
$job = '0 */2 * * * /usr/bin/php5 /home/user1/work.php';
¿Cómo lo agrego a la lista de trabajos crontab con PHP?
Respuestas:
uso del comando crontab
Entonces,
Lo anterior se puede utilizar tanto para crear como para editar / adjuntar siempre que el usuario tenga el permiso de escritura de archivo adecuado.
Para eliminar trabajos:
Además, tenga en cuenta que apache se ejecuta como un usuario en particular y que generalmente no es root, lo que significa que los trabajos cron solo se pueden cambiar para el usuario de apache a menos que se le
crontab -u
otorgue privilegios al usuario de apache.fuente
shell_exec('crontab -l')
solo devolverá la última línea. Yo uséexec('crontab -l', $output)
. Luego implosione la matriz $ output en una cadena (con \ n como pegamento).system()
,passthru()
,shell_exec()
yexec()
, intente utilizar el panel de control que viene con el alojamiento, tales como cPanel o Plesk.Recientemente preparamos un mini proyecto (PHP> = 5.3) para administrar los archivos cron para tareas privadas e individuales. Esta herramienta conecta y administra los archivos cron para que pueda usarlos, por ejemplo, por proyecto. Pruebas unitarias disponibles :-)
Muestra de la línea de comando:
Muestra de API:
Gestión de tareas individuales desde API:
github: php-crontab-manager
fuente
Verificar un cronjob
Agregar un cronjob
Eliminar un crontab
Ejemplo
fuente
crontab -l
\ n'. $ comando. '" | crontab -', $ salida); es correcto. No obtengo crontab para www-data "-": 0: errores de minutos incorrectos en el archivo crontab, no se puede instalar.Esto debería hacerlo
fuente
Probé la solución a continuación
}
créditos a: Crontab Class para agregar, editar y eliminar trabajos Cron
fuente
Puede intentar anular la
EDITOR
variable de entorno con algo comoed
que puede tomar una secuencia de comandos de edición sobre la entrada estándar.fuente
Depende de dónde guarde su crontab:
fuente
Puede poner su archivo en /etc/cron.d/ en formato cron. Agregue un prefijo único al nombre de archivo Para enumerar los trabajos cron específicos del script, simplemente trabaje con una lista de archivos con un prefijo único. Elimine el archivo cuando desee deshabilitar el trabajo.
fuente
Bien ...
Pruebe esto para eliminar un trabajo cron específico (probado).
fuente
exit;
despuésheader('Location: ...');
. Además, este formulario es bastante peligroso, ya que puede agregar un trabajo cron para "destruir" el servidor.La forma más sencilla es utilizar el comando shell_exec para ejecutar un script bash, pasando los valores como parámetros. A partir de ahí, puede manipular crontabs como lo haría en cualquier otro script no interactivo, y también asegurarse de tener los permisos correctos utilizando sudo, etc.
Vea esto, Crontab sin crontab -e , para más información.
fuente
En lugar de crontab, también puede usar la cola de tareas del motor de aplicaciones de Google . Tiene una generosa cuota gratuita, es rápido, escalable, modificable.
fuente
Es simple. Puedes curl para hacerlo, asegúrate de que curl esté instalado en el servidor:
para activar cada minuto: * * * * * curl --request POST ' https://glassdoor.com/admin/sendBdayNotification '
minuto hora día mes semana
Supongamos que desea enviar esta notificación a las 2:15 p.m. todos los días . Puede cambiar POST / GET según su API:
15 14 * * * curl --request POST 'url of ur API'
fuente